Android 不使用getResponse()无法发出post请求
我正在使用HttpURLConnection在Azure服务器上发布。只有当我想从服务器返回响应代码时,请求才会成功Android 不使用getResponse()无法发出post请求,android,httpurlconnection,response-time,Android,Httpurlconnection,Response Time,我正在使用HttpURLConnection在Azure服务器上发布。只有当我想从服务器返回响应代码时,请求才会成功 private void PostStateSync(ProxyState mData) throws Exception { GsonBuilder gsonBuilder= new GsonBuilder(); gsonBuilder.serializeNulls(); String json = gsonBuilder.create().toJson
private void PostStateSync(ProxyState mData) throws Exception
{
GsonBuilder gsonBuilder= new GsonBuilder();
gsonBuilder.serializeNulls();
String json = gsonBuilder.create().toJson(mData);
HttpURLConnection connection = null;
URL object = new URL(ComURL);
connection = (HttpURLConnection) object.openConnection();
connection.setChunkedStreamingMode(0);
connection.setReadTimeout(15000);
connection.setConnectTimeout(15000);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "*/*");
connection.setRequestProperty("Accept-Encoding", "gzip, deflate");
OutputStream os = connection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
bufferedWriter.write(json);
bufferedWriter.flush();
bufferedWriter.close();
connection.connect();
connection.getResponseCode();
Log.v("Response state",String.valueOf(mStatus));
Log.v("Response state","send");
}
在这种情况下,请求可以工作,但我有延迟问题,原因是服务器性能低下。为了缩短请求时间,我尝试注释connection.getResponseCode()代码>
如果我评论:
connection.getResponseCode();
Log.v(“响应状态”,String.valueOf(mStatus))
post请求不起作用(我在logcat中没有收到任何错误或警告)
这是我放置请求的线程。(我在proxystatelist中每隔15秒接收一次数据)。我错过了什么
private void StartSendState()
{
SendStateWorkerThread = new Thread(new Runnable() {
@Override
public void run() {
while (canSendRun)
{
try {
ProxyState proxyState;
synchronized (proxyStateList) {
proxyState = proxyStateList.peek();
}
if (proxyState!=null) {
PostStateSync(proxyState);
}
synchronized (proxyStateList)
{
proxyStateList.poll();
}
Thread.sleep(5000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
});
SendStateWorkerThread.start();
}
您也可以调用connection.getInputStream()
,但我不确定为什么注释响应代码会更快。从已经获取的响应对象中获取整数值不会有很大的速度提升我同意你的看法,但是为什么不获取响应我的请求不起作用呢?这是weirdI的一个项目,我发现了同样的问题,但我只是接受了我需要获取响应代码的事实,并且它允许在400SY中的任何时候抛出错误。您也可以调用连接。getInputStream()
,但我不确定为什么注释响应代码会更快。从已经获取的响应对象中获取整数值不会有很大的速度提升我同意你的看法,但是为什么不获取响应我的请求不起作用呢?这是weirdI的一个项目,我发现了同样的问题,但我只是接受了我需要获得响应代码,并且它允许在400年代时抛出错误