Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android上使用ApacheHttpClient查看完整的HttpPost请求_Android_Forms_Post_Apache Httpclient 4.x - Fatal编程技术网

如何在Android上使用ApacheHttpClient查看完整的HttpPost请求

如何在Android上使用ApacheHttpClient查看完整的HttpPost请求,android,forms,post,apache-httpclient-4.x,Android,Forms,Post,Apache Httpclient 4.x,所以我有一段代码,它包含一个HttpPost请求,如下所示 public LoginForm apa; .... SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); HttpParams httpparams = new BasicHttpParams(); Sin

所以我有一段代码,它包含一个HttpPost请求,如下所示

public LoginForm apa;
....
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("https", 
SSLSocketFactory.getSocketFactory(), 443));
HttpParams httpparams = new BasicHttpParams();
SingleClientConnManager mgr = new SingleClientConnManager(httpparams, schemeRegistry);
HttpClient httpclient = new DefaultHttpClient(mgr, httpparams);
try {
  List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
  for(String i : apa.getParams().keySet()){
  nameValuePairs.add(new BasicNameValuePair(i, apa.getParams().get(i)));
}
List<NameValuePair> cookies = new ArrayList<NameValuePair>();
StringBuilder sb = new StringBuilder();
for(String i : apa.getCookies().keySet()){
  sb.append(i);
  sb.append("=");
  sb.append(apa.getCookies().get(i));
  sb.append(";");
}
// Trying to remove last ;
String cookie = sb.toString();
cookie = cookie.substring(0, cookie.length()-1);
HttpPost httppost = new HttpPost(URL);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httppost.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded");
httppost.setHeader("Cookie", cookie);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
System.out.println(EntityUtils.toString(response.getEntity()));

它并没有像我预期的那样登录,所以有没有一种方法可以输出整个请求头,并将其与我在Chrome开发工具中看到的请求头进行匹配?我是不是想得太多了?一般来说,Android或Java是否有表单登录库?是否需要添加内容长度?

打印标题很简单-可以使用方法getAllHeaders列出标题。
如果需要打印HttpEntity,可以使用方法writeTo将整个实体写入ByteArrayOutputStream,并使用toString创建字符串。

打印标题很简单-可以使用方法getAllHeaders列出标题。
如果需要打印HttpEntity,可以使用方法writeTo将整个实体写入ByteArrayOutputStream,并使用toString创建一个字符串。

但没有任何内置功能。迭代和取消编码是用户的责任?我不知道还有其他责任:-我已经使用这些方法成功调试了包含二进制图像的多部分post。它为您提供原始的post数据,toString方法具有编码参数,所以您可以在utf-8中打印。迭代和取消编码是用户的责任?我不知道还有其他责任:-我已经使用这些方法成功调试了包含二进制图像的多部分post。它为您提供原始post数据,toString方法具有编码参数,所以您可以使用utf-8打印。