获取后,Android无法执行POST请求

获取后,Android无法执行POST请求,android,post,get,internal-server-error,Android,Post,Get,Internal Server Error,我的问题是:在GET请求授权和保存cookie之后,试图执行POST请求以添加数据,但服务器以500代码响应。有趣的是,如果在浏览器中使用POST查询字符串形式,它将正确执行。下面是代码 DefaultHttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(site + "/admin/users/login_do/?login=admin&password=demo"); HttpRe

我的问题是:在GET请求授权和保存cookie之后,试图执行POST请求以添加数据,但服务器以500代码响应。有趣的是,如果在浏览器中使用POST查询字符串形式,它将正确执行。下面是代码

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(site + "/admin/users/login_do/?login=admin&password=demo");
HttpResponse response = httpclient.execute(httpget);
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
HttpPost httppost = new HttpPost(site + "/admin/news/add/5/item/do/");
httppost.addHeader("Cookie", "PHPSESSID="+cookies.get(0).getValue()+"; umicms_session="+cookies.get(1).getValue()+"; stat_id="+cookies.get(2).getValue());

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("active", "1"));
nameValuePairs.add(new BasicNameValuePair("name", "test"));
nameValuePairs.add(new BasicNameValuePair("data[new][anons]", "anno"));
nameValuePairs.add(new BasicNameValuePair("data[new][content]", "cont"));
nameValuePairs.add(new BasicNameValuePair("data[new][publish_time]", "1420202020"));

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
response = httpclient.execute(httppost);
StatusLine status = response.getStatusLine();
Log.d("my",String.valueOf(status.getStatusCode()));
Log.d("my",String.valueOf(status.getReasonPhrase()));
DefaultHttpClient-httpclient=newdefaulthttpclient();
HttpGet-HttpGet=newhttpget(site+“/admin/users/login\u-do/?login=admin&password=demo”);
HttpResponse response=httpclient.execute(httpget);
列表cookies=httpclient.getCookieStore().getCookies();
HttpPost-HttpPost=newhttppost(site+“/admin/news/add/5/item/do/”;
httppost.addHeader(“Cookie”,“PHPSESSID=“+cookies.get(0).getValue()+”umicms_session=“+cookies.get(1).getValue()+”;stat_id=“+cookies.get(2).getValue());
List nameValuePairs=新的ArrayList();
添加(新的BasicNameValuePair(“活动”、“1”));
添加(新的BasicNameValuePair(“名称”、“测试”);
添加(新的BasicNameValuePair(“数据[新][anons],“anno”);
添加(新的BasicNameValuePair(“数据[新][内容],“续”);
添加(新的BasicNameValuePair(“数据[新][发布时间]”,“142020020”);
setEntity(新的UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
response=httpclient.execute(httppost);
StatusLine status=response.getStatusLine();
Log.d(“my”,String.valueOf(status.getStatusCode());
Log.d(“my”,String.valueOf(status.getReasonPhrase());
我尝试使用HttpURLConnection运行POST,但也收到了500条响应。
谁能说出问题出在哪里?

问题已解决。我忘了用POST请求发送csrf令牌并设置Referer头

nameValuePairs.add(new BasicNameValuePair("csrf", csrf));

httppost.addHeader("Referer", referlink);