Android-Java.io.Exception:内容长度错误预期x内存量或y内存量
我一直在尝试使用Android和。我正在使用Eclipse和Android模拟器。当我将代码作为Android应用程序运行时,会出现以下错误:Android-Java.io.Exception:内容长度错误预期x内存量或y内存量,java,android,http,post,Java,Android,Http,Post,我一直在尝试使用Android和。我正在使用Eclipse和Android模拟器。当我将代码作为Android应用程序运行时,会出现以下错误: W/System.err(533):java.io.IOException:向BLAST服务器提交序列时出错。原因:内容长度承诺为2000字节,但收到214 当我使用完全相同的代码并将其作为常规Java应用程序运行时,它工作得非常好。有什么想法吗?当我试图在安卓系统中发出POST请求时,我也想到了这一点如果您在标题中设置了内容长度,而实际内容的长度不同,
W/System.err(533):java.io.IOException:向BLAST服务器提交序列时出错。原因:内容长度承诺为2000字节,但收到214
当我使用完全相同的代码并将其作为常规Java应用程序运行时,它工作得非常好。有什么想法吗?当我试图在安卓系统中发出POST请求时,我也想到了这一点如果您在标题中设置了内容长度,而实际内容的长度不同,它将在Android中抛出一个
IOException
(在普通JDK中,它工作了,尽管它是错误的)
您可以使用以下代码再现异常:
try {
URL oracle = new URL("http://oasth.gr/tools/lineTimes.php");
HttpURLConnection yc = (HttpURLConnection) oracle.openConnection();
yc.setRequestProperty("User-Agent",
"Mozilla/5.0 (X11; Linux i686; rv:2.0b12) Gecko/20110222 Firefox/4.0b12");
yc.setRequestProperty("Referer",
"http://oasth.gr/tools/lineTimes.php");
yc.setRequestProperty("Accept-Language",
"el-gr,el;q=0.8,en-us;q=0.5,en;q=0.3");
yc.setRequestProperty("Accept-Charset",
"ISO-8859-7,utf-8;q=0.7,*;q=0.7");
// content length should be 29 !!
yc.setRequestProperty("Content-Length", "1000");
// content length is 29 !
String parames = "bline=63&goes=a&lineStops=886";
yc.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(yc.getOutputStream());
wr.write(parames);
wr.flush();
Log.d(TAG, "" + yc.getResponseCode());
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine;
StringBuilder sbu = new StringBuilder();
while ((inputLine = in.readLine()) != null)
sbu.append(inputLine);
wr.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
Log.e("getLinesArrival Exception", e.getMessage());
}
所以,如果你把线去掉
yc.setRequestProperty("Content-Length", "1000");
它会成功的 请发布代码,我们看不出它可能有什么问题:)是的,你是对的。感谢您的帮助,很抱歉没有将此更改为“已修复”,我想我当时已经做到了:没有人投票支持您,因此,既然您如此乐于助人,那么就给您:)