http://blog.sina.com.cn/s/blog_60d2d62a01011shn.html
解决方案 »
- 刚开始学android,照着书上例子做出现错误,不懂,代码贴出来高手指教下
- 如何实现程序安装更新之后重启自己
- 100分!求助!怎么在mm编译时强行把某几个文件编到APK的根目录下
- android中WebView如何设置代理
- 哪位大虾帮帮忙哦
- 【代码】Android如何实现简单音乐播放器的代码
- Socket服务器数据流无法正常接收
- TranslateAnimation移动View后,只有视图改变了,坐标还是原先的,怎么解决。
- 在安卓2.3开发的程序放到安卓4.2出现问题
- ImageView.setImageBitmap() nullpointerException
- 为什么安卓上有很多街机游戏?他们都如何移植到安卓上的?
- android手机应用程序开发所遇到的问题
public void run() {
try {
/*
* NameValuePair代表一个HEADER,List<NameValuePair>
* 存储全部的头字段
* UrlEncodedFormEntity类似于URLEncoder语句进行URL编码
* HttpPost类似于HTTP的POST请求
* client.execute()类似于发出请求,并返回Response
*/
DefaultHttpClient client = new DefaultHttpClient();
client.setRedirectHandler(new RedirectHandler() {
@Override
public boolean isRedirectRequested(
HttpResponse response,
HttpContext context) {
Log.e("isRedirectRequested_response code:",
response.getStatusLine()
.getStatusCode() + "");
return false;
}
@Override
public URI getLocationURI(
HttpResponse response,
HttpContext context)
throws ProtocolException {
// TODO Auto-generated method stub
return null;
}
});
List<NameValuePair> list = new ArrayList<NameValuePair>();
NameValuePair pair1 = new BasicNameValuePair(
"name", name.getText().toString());
NameValuePair pair2 = new BasicNameValuePair(
"age", age.getText().toString());
list.add(pair1);
list.add(pair2);
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(
list, "UTF-8");
HttpPost post = new HttpPost(url);
post.setEntity(entity);
HttpResponse response = client.execute(post);
Log.e("response code:", response
.getStatusLine().getStatusCode() + "");
if (response.getStatusLine().getStatusCode() == 200) {
InputStream in = response.getEntity()
.getContent();// 接收服务器的数据,并在Toast上显示
String str = readString(in);
Log.e("response_post:", str);
} else {
Log.e("response_post:", "POST提交失败");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
以上这段代码是模拟post请求,假设发生重定向,本来 response
.getStatusLine().getStatusCode() 应该返回302的,可是不知道为什么总是返回200,求解。我已进行重定向的处理:http://blog.sina.com.cn/s/blog_60d2d62a01011shn.html#post
还有个问题,为什么用HttpURLConnection获取不到完整额网页源码,上一段也是一样获取不到全部的网页源码,是怎么回事呢?
public class RedirectHandler extends DefaultRedirectHandler{ @Override
public boolean isRedirectRequested(HttpResponse response,
HttpContext context) {
// TODO Auto-generated method stub
return false;
}}
调用时修改DefaultHttpClient 的RedirectHandler为重写的RedirectHandler
DefaultHttpClient loginClient = new DefaultHttpClient();
RedirectHandler redirectHandler=new RedirectHandler();
loginClient.setRedirectHandler(redirectHandler);
HttpResponse response=loginClient.execute(httppost);
我的这个是什么情况啊,client没有那个设置重定向的方法啊
你是写了个新类MyRedirectHandlerclient的setRedirectHandler方法不接受这个参数,不认识
this.httpClient.setRedirectHandler(new RedirectHandler() {
public boolean isRedirectRequested(HttpResponse response, HttpContext context) {
return false;
}
});