HTTP POST在Android中不起作用

时间:2012-10-10 10:13:28

标签: java android http-post

我遇到了同样的问题 - 您需要借助POST将用户添加到数据库中。我做了与iPhone中相同的一切 - 但我的Android实现由于某种原因不起作用 - 服务器上的用户没有保存。

请告诉我有什么问题?我希望得到你的帮助。

Android HTTP POST:

 public void postData() {        
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://&&&&&&&.dk/accounts/save_user/");
    try {
        facebookUserInfo = new JSONObject(mFb.request("me"));
    } catch (MalformedURLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
        try {
            nameValuePairs.add(new BasicNameValuePair("fbuid", facebookUserInfo.getString("id")));
            nameValuePairs.add(new BasicNameValuePair("first_name", facebookUserInfo.getString("first_name")));
            nameValuePairs.add(new BasicNameValuePair("last_name ", facebookUserInfo.getString("last_name")));
            System.out.println(facebookUserInfo.getString("id")+" "+facebookUserInfo.getString("first_name")+" "+facebookUserInfo.getString("last_name"));
        }
        catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
        System.out.println(response.getEntity()+" "+response.getStatusLine());

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
}

IPhone HTTP POST:

   NSURL *url = [NSURL URLWithString:@"http://&&&&&&&&&.dk/accounts/save_user/"];

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    //[request setPostValue:myAnnotation.google_id forKey:@"google_id"];
    [request setPostValue:fbuid forKey:@"fbuid"];
    [request setPostValue:_fbFirstName forKey:@"first_name"];
    [request setPostValue:_fbLastName forKey:@"last_name"];

    [request startSynchronous];
    NSError *error = [request error];
    if (!error) {
        NSString *response = [request responseString];
        NSLog(@"%@",response);
    } 

1 个答案:

答案 0 :(得分:0)

我已经将你的解决方案提供给将来帮助其他人的答案。

问题在于这一行。

nameValuePairs.add(new BasicNameValuePair("last_name ", facebookUserInfo.getString("last_name")));

问题是由密钥last_name中的间隙(空格)引起的。所以要修复此方法EntityUtils.toString(httpPost.getEntity()会返回结果行

fbuid=100004343290749&first_name=Proba&last_name+=Proba

更正后

fbuid=100004343290749&first_name=Proba&last_name=Proba