Android 向服务器发送HTTP请求后,有时我会得到状态302(重定向)
我尝试用json参数向某个服务器发送Android 向服务器发送HTTP请求后,有时我会得到状态302(重定向),android,http,post,curl,Android,Http,Post,Curl,我尝试用json参数向某个服务器发送POST请求,然后等待json响应 从Android上看,它工作得很好,但从Linux上看,我得到状态302redirect。我真的不知道我的问题在哪里 以下是来自linux的命令: curl-i-X POST--data“id=105&json={\'orderBy\':0\'maxResults\':50}” 我得到的回应是: HTTP/1.1 302 Found Date: Thu, 04 Jul 2013 12:22:06 GMT Server:
POST
请求,然后等待json响应
从Android上看,它工作得很好,但从Linux上看,我得到状态302
redirect。我真的不知道我的问题在哪里
以下是来自linux的命令:
curl-i-X POST--data“id=105&json={\'orderBy\':0\'maxResults\':50}”
我得到的回应是:
HTTP/1.1 302 Found
Date: Thu, 04 Jul 2013 12:22:06 GMT
Server: Apache
X-Powered-By: PHP/5.3.19
Set-Cookie: PHPSESSID=dqblvijvttgsdrv2u5tn72p9d6; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
location: http://mysite.com/fwf/online/
Content-Length: 0
Connection: close
Content-Type: text/html
"POST /ctlClient/ HTTP/1.1" 302 - "-" "Apache-HttpClient/4.1 (java 1.5)"
"GET /fwf/online/ HTTP/1.1" 200 13981 "-" "Apache-HttpClient/4.1 (java 1.5)"
从服务器访问日志:
“POST/ctlClient/HTTP/1.1”302-““curl/7.15.5(x86_64-redhat-linux-gnu)libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5”
Android:
String data = "{\"orderBy\":0\"maxResults\":50}";
String WEFI_MAIL_URL = "http://mysite.com/ctlClient/";
DefaultHttpClient httpclient = null;
String out = null;
try {
httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(WEFI_MAIL_URL);
httpost.setHeader("User-Agent", "Apache-HttpClient/4.1 (java 1.5)");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("id", "105"));
nvps.add(new BasicNameValuePair("json", data));
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream is = entity.getContent();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ( (line = br.readLine()) != null) {
out = line;
}
is.close();
if(isTimeOut == false){
_loadActual();
}
else{
return;
}
} else {
return;
}
} catch (Exception e) {
}
if (httpclient != null) {
httpclient.getConnectionManager().shutdown();
}
}
我们可以看到POST服务器将我重定向到/fwf/online/
从Wireshark,我从两种方法中得到相同的结果:
POST /ctlClient/ HTTP/1.1
User-Agent: Apache-HttpClient/4.1 (java 1.5)
Content-Type: application/x-www-form-urlencoded
Content-Length: 301
Host: mysite.com
Connection: Keep-Alive
为什么它可以在Android上运行,而不能在Linux上运行
有人能帮我或给我指路吗?我该如何解决它?
谢谢您想在curl命令中添加-L。看