我有这个代码:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(10000);
conn.setRequestMethod(type);
conn.setDoOutput(output);
if(output)
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setDoInput(true);
conn.connect();
OutputStream out = null;
if(output)
out = conn.getOutputStream();
InputStream in = conn.getInputStream();
if(output) {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
bw.write(getQuery(params));
bw.flush();
}
// Get output
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
in.close();
if(output)
out.close();
// Do stuff with the output
当输出
为 true(执行 POST 或 PUT 请求)时,此代码会引发 IOException,并且不会完成请求。我尝试对 conn.connect()
重新排序、编写调用和流创建块,但没有排列工作。
在所有情况下,BufferedReader都工作得很好,不会抛出任何异常。< code>getQuery正确返回URL编码的字符串。
以下是来自IOExc的堆栈跟踪:
java.io.IOException: closed
W/System.err﹕ at com.android.okio.RealBufferedSink$1.write(RealBufferedSink.java:129)
W/System.err﹕ at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:167)
W/System.err﹕ at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:158)
W/System.err﹕ at java.io.BufferedWriter.flush(BufferedWriter.java:124)
W/System.err﹕ at org.project.NetworkHelper.doRequest(NetworkHelper.java:57)
W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
最终发生的是请求通过,但没有一个POST或PUT数据最终到达服务器——就像写调用从未发生过一样。
有人知道是什么原因导致的吗,或者如何解决?
你把代码弄复杂了。下面是< code>openConnection()实现的一个示例。
byte[] postData = urlParameters.getBytes(Charset.forName("UTF-8"));
int postDataLength = postData.length;
JSONArray jsonArray = null;
try {
URL url = new URL(request);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
httpURLConnection.setInstanceFollowRedirects(false);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
httpURLConnection.setRequestProperty("charset", "utf-8");
httpURLConnection.setRequestProperty("Content-Length",
Integer.toString(postDataLength));
httpURLConnection.setConnectTimeout(10000);
DataOutputStream dataOutputStream = new DataOutputStream(
httpURLConnection.getOutputStream());
dataOutputStream.write(postData);
dataOutputStream.flush();
dataOutputStream.close();
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream responseStream = new BufferedInputStream(
httpURLConnection.getInputStream());
BufferedReader responseStreamReader = new BufferedReader(
new InputStreamReader(responseStream));
//get output
}
} catch (Exception e) {
Customs.mToast(context, "Server down! Try after some time");
e.printStackTrace();
}
XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); 方法 描述 open(method,url,async) 规定请求的类型、URL 以及是否异步处理
好的,我对网络服务完全陌生,对于我正在做的一个项目,我试图了解整个SOAP。我想我对正在发生的事情有一个模糊的理解,但是我缺少一些具体的信息,我在谷歌上找不到任何有用的东西。 我已经阅读了其他人提出的问题,例如使用java向Web服务发出的SOAP请求,但我仍然无法完全弄清楚发生了什么。 具体来说,我尝试使用这里提供的服务http://ec.europa.eu/taxation_customs/v
本文向大家介绍Android使用httpPost向服务器发送请求的方法,包括了Android使用httpPost向服务器发送请求的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android使用httpPost向服务器发送请求的方法。分享给大家供大家参考,具体如下: 可以直接用的完整类。 希望本文所述对大家Android程序设计有所帮助。
请求将被发送1个请求/秒,还是所有请求将被一次发送到服务器?
我最近一直在用Java编写自己的Webserver,因为我觉得有一个很不错,昨天我偶然发现了一个问题,我仍然没有解决。我的浏览器(取消搜索Chromium)似乎向服务器发送了一些空请求或类似的东西。我实现了一个请求处理程序,它应该读取GET请求并提取请求的资源。它的工作原理是这样的:它以请求为例:“GET/index.htmlHTTP/1.1”并将其放入带有String.split (" ");