0

我遇到了同样的问题——您需要借助 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);
    } 
4

1 回答 1

0

我已将您的解决方案提取为将来帮助其他人的答案。

问题出在这一行。

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

问题是由 key 中的间隙(空格)引起的last_name。所以修复这个方法EntityUtils.toString(httpPost.getEntity()返回一个结果行

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

修正后

fbuid=100004343290749&first_name=Proba&last_name=Proba

于 2014-02-07T15:28:28.033 回答