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