嗨,我有一个函数,传递url获取参数到Web服务器上的PHP文件,并等待文件的响应(通常需要10-20秒).我想把它放在一个循环中,因为我必须一次将这些Get请求发送到大约5个不同的php文件但是当我尝试将它添加到循环时,该函数使循环等待,直到文件返回响应才会进行到下一个.
public string HttpGet(string URI, string Parameters)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI + Parameters);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader resStream = new StreamReader(response.GetResponseStream());
return resStream.ReadToEnd().Trim();
}
private void SendCommand()
{
for( int i = 0; i <= 4; i++)
{
AddRTB(HttpGet(url, paramater));
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以一次发送所有5个请求而无需等待之前完成?(我正在考虑穿线它,但是我以前从未碰过它,因为我不知道从哪里开始.)
我想在Url中传递一个参数(更新我的URL包含的许多参数之一),如下所示:
httpGet.setURI(new URI(url/user?"nickname"="John")
Run Code Online (Sandbox Code Playgroud)
Python中的ServerSide:
class GetInfo(BaseHandler):
def Get(self):
nickname = self.get_argument("nickname")
gender = self.get_argument("gender")
logging.info(nickname)
logging.info(gender)
application = tornado.web.Application([
(r"/", MainHandler),
(r"/user", GetInfo),
])
Run Code Online (Sandbox Code Playgroud)
服务器告诉我,我不能这样做,因为缺少参数"性别".我能怎么做?
谢谢
我有一个ASMX Web服务设置为使用HTTP GET方法.采用基本String和Int参数的简单方法正常工作,我可以MyService.asmx/MethodName?Param=Value用XML 调用并获得响应.
但是,当我有一个具有可空Int(即int?)的方法时,我收到此错误:
<方法名称> Web服务方法名称无效.
错误消息令人困惑,因为该方法确实存在,而不是在GET范围内.我认为这是因为可空类型太复杂而无法通过URL传递,但我找不到任何文档或SO帖子.
我很欣赏Lists或自定义类等复杂类型无法使用GET,但我认为可以原生处理一个简单的可空int或可空日期,只需检测它是否从URL中省略.猜猜不是那么简单!
任何建议或解决方法将不胜感激.
蒂姆,谢谢
下面的代码来自一本书,所以它不会出错.但我不知道如何解决这个错误.当删除方法doGet()时,同样的错误!
"HTTP状态405 - 此URL不支持HTTP方法GET"
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PDFServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
this.doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
response.setContentType("application/pdf");
ServletOutputStream out=response.getOutputStream();
File pdf=null;
BufferedInputStream buf=null;
try{
pdf=new File("C:\\Users\\lk\\Desktop\\Desktop\\ example.pdf");
response.setContentLength((int)pdf.length());
FileInputStream input=new FileInputStream(pdf);
buf=new BufferedInputStream(input);
int readBytes=0;
while((readBytes=buf.read())!=-1) out.write(readBytes);
}catch(IOException e){
System.out.println("file not found!");
}finally{
if(out!=null) …Run Code Online (Sandbox Code Playgroud) 我有一个像下面这样的动作
public class CompareAction {
private Long[] pids;
public Long[] getPids() {
return pids;
}
public void setPids(Long[] pids) {
this.pids = pids;
}
public String displayComparison() {
for (Long pid : pids) {
System.out.println("pid = " + pid);
System.out.println();
}
return "success";
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过在地址栏中键入以下URL来发送数组http://localhost:8080/sm-shop/compare?pids=12,23,34.我想要的输出是
pid = 12
pid = 23
pid = 34
Run Code Online (Sandbox Code Playgroud)
但我得到的是
pid = 122334
Run Code Online (Sandbox Code Playgroud)
我试过谷歌搜索但无法找到如何做到这一点.请帮我弄清楚什么是错的.
我的应用程序向某些api服务发出http请求,该服务返回一个gzip压缩响应.如何确保响应确实是gzip格式?我很困惑为什么在提出请求后我没有解压缩它.
以下是我的代码:
public static String streamToString(InputStream stream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
StringBuilder sb = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
} catch (IOException e) {
logger.error("Error while streaming to string: {}", e);
} finally {
try { stream.close(); } catch (IOException e) { }
}
return sb.toString();
}
public static String getResultFromHttpRequest(String url) throws IOException { // add retries, catch all exceptions
HttpClient httpclient = new DefaultHttpClient();
HttpGet …Run Code Online (Sandbox Code Playgroud) 当我转到/blaNodeJS 应用程序中的页面时,控制台会打印出来
GET /bla - - ms - -
Run Code Online (Sandbox Code Playgroud)
在字(以便于谷歌搜索)dash dash ms dash dash。
这是什么意思?
我正在使用node.js Restify。
我有一个 HTTP GET 请求,如下所示;
http://127.0.0.1//read_val?XXX=123&YYY=456&ZZZ=789
在我的处理函数中,要检索URL参数,相关代码将是这样的;
var api_get_func = function (app, url_path) {
function respond(req, res, next) {
var XXX= req.query.XXX;
var YYY = req.query.YYY;
var ZZZ = req.query.ZZZ;
//SQL query ...
return next();
}
app.get(url_path, respond);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我有一个像下面这样的 HTTP GET 函数怎么办?
http://127.0.0.1//read_val?XXX=123&YYY=456
ZZZURL 中未提供该参数。如何修改代码以便ZZZ使用默认值,例如111?
我需要自动化其余的 API。API 受 Spring 安全保护。
以下是验证代码:
Response response = given().auth()
.form(userName, password, FormAuthConfig.springSecurity().withLoggingEnabled(new LogConfig(captor, true)))
.post("/home/xyz.html");
Assert.assertTrue("Error occurs", response.statusCode() == 302);
if (response.statusCode() == 302) {
Cookie cookie = response.getDetailedCookie("JSESSIONID");
result.actualFieldValue = "User Authenticated: Session ID ->" + cookie.getValue();
System.out.println("Cookie set : "+cookie.getValue());
apiTestSessionID = cookie.getValue();
}
Run Code Online (Sandbox Code Playgroud)
用户登录并返回 302 状态,表示重定向。我找到了 cookie 并设置了一些全局变量。
现在,我使用请求设置 cookie:
RequestSpecification reqSpecification = new RequestSpecBuilder().addCookie("JSESSIONID", AbstractBaseClass.apiTestSessionID).build();
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("cstmrID", "000N0961");
parameters.put("pageNumber", "1");
parameters.put("pageSize", "10");
parameters.put("sortColumnName", "FIELD_NM");
parameters.put("sortDir", "asc");
parameters.put("filterColumnName1", "");
parameters.put("filterColumnName2", …Run Code Online (Sandbox Code Playgroud) 我正在使用静态 URL 查询数据服务。服务器(也是节点)发送大约 955k 的 JSON 数据。
1)我可以CURL数据以获得正确的结果,即它通过JSON.parse()。
2)从节点,我可以 exec("curl ..."); 并且也得到正确的结果。
3)同时使用Request和Axios,我得到了大约600k的数据。精确的字符数每次都会发生变化。
4)使用 Axios,我将数据流式传输到文件中,并获得许多“数据”事件,并将它们连接到文件中。这也是不正确的。
5)它可以在较小的有效载荷下正常工作。
专家联合起来!!我任由你摆布。我将祈求并赞扬并感谢您的帮助。
如果没有您的帮助,我将拥有一个使用 NodeJS 中的 CURL 的生产应用程序,邪恶将会获胜。
此致, TQ White II
更新:有人要求我提供代码片段。这里是:
const datGetterWORKS_FOR_SMALL_DATA_LOADS=(element, next)=>{
const localCallback=sendToTransformerCallback(element, next);
const {url, headers}=networkSpecs.connection;
axios.get(url + element.urlSegment, {
method: 'get',
responseType: 'json',
headers: headers,
maxContentLength: 6000000,
})
.then(function (response) {
localCallback('', response, response.data)
});
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是给 require('async').each() 进程的。
http-get ×10
node.js ×3
c# ×2
http-post ×2
ajax ×1
android ×1
asmx ×1
asp.net ×1
axios ×1
console ×1
cookies ×1
gzip ×1
httpclient ×1
httpresponse ×1
java ×1
java-ee ×1
javascript ×1
python ×1
rest-assured ×1
restify ×1
servlets ×1
struts2 ×1
tornado ×1
web-services ×1