Java Android截击请求未向服务器/数据库发送POST数据
我正在开发一个android应用程序,我一直在尝试整合社交媒体登录,我试图添加通过社交媒体登录(姓名和电子邮件)检索到的详细信息,并通过截击请求将其添加到我们服务器上的用户数据库中。 到目前为止,我已经成功地获得了用户的详细信息,并使用我创建的“会话”类将其添加到共享首选项中,但是调用另一个方法将数据发送到服务器并不起作用Java Android截击请求未向服务器/数据库发送POST数据,java,android,android-studio,try-catch,android-volley,Java,Android,Android Studio,Try Catch,Android Volley,我正在开发一个android应用程序,我一直在尝试整合社交媒体登录,我试图添加通过社交媒体登录(姓名和电子邮件)检索到的详细信息,并通过截击请求将其添加到我们服务器上的用户数据库中。 到目前为止,我已经成功地获得了用户的详细信息,并使用我创建的“会话”类将其添加到共享首选项中,但是调用另一个方法将数据发送到服务器并不起作用 facebookLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResu
facebookLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
String fbID = null;
String fbName = null;
String fbEmail = null;
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
try {
fbID = object.getString("id");
fbName = object.getString("name");
fbEmail = object.getString("email");
session.setLogin(true);
session.setUserDetails(fbEmail,fbName);
} catch (JSONException e) {
e.printStackTrace();
} finally {
registerSocialUser(fbName, fbEmail);
}
}
});
Config.REGISTER\u SOCIAL\u URL是一个php文件,它接受两个POST参数(名称和电子邮件),并在检查数据库是否不存在后将其添加到数据库中。我可以使用完全相同的详细信息通过浏览器手动调用它,它工作正常并添加到数据库中
private void registerSocialUser (final String name, final String email) {
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest request = new StringRequest(Request.Method.POST, Config.REGISTER_SOCIAL_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("CREATION", "Social Media Account Added: " + name + " " + email);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("CREATION", "Create Error");
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("user",name); //name
params.put("email",email); //email
return params; //return the parameters
}
};
queue.add(request);
Log.d("CREATION", "SUCCESS");
}
请原谅,如果我的任何代码是非常糟糕的做法,我是Android开发的新手,因此非常感谢您的帮助:)在发送参数时,您可以轻松使用POST请求方法。你很有可能错过了一些方法
private void registerSocialUser (final String name, final String email) {
RequestQueue queue = Volley.newRequestQueue(this);
String stopArchiveUrl = Config.REGISTER_SOCIAL_URL;
StringRequest stringRequest = new StringRequest(Request.Method.POST, stopArchiveUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("CREATION", "Social Media Account Added: " + name + " " + email);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("ERROR", "Error adding Social Media Account");
}
}){
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("name",name); //name
params.put("email",email); //email
return params; //return the parameters
}
};
// Add the request to the RequestQueue.
queue.add(stringRequest);
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
应该是哪一个
params.put("name",name); //name
另外,如果您也在服务器端使用一个密钥附加一个令牌以进行验证,那么效果会更好。这样,就不会有人匿名点击你的url(如果有泄露)。在发送参数时,你可以很容易地使用POST请求方法。你很有可能错过了一些方法
private void registerSocialUser (final String name, final String email) {
RequestQueue queue = Volley.newRequestQueue(this);
String stopArchiveUrl = Config.REGISTER_SOCIAL_URL;
StringRequest stringRequest = new StringRequest(Request.Method.POST, stopArchiveUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("CREATION", "Social Media Account Added: " + name + " " + email);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("ERROR", "Error adding Social Media Account");
}
}){
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("name",name); //name
params.put("email",email); //email
return params; //return the parameters
}
};
// Add the request to the RequestQueue.
queue.add(stringRequest);
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
应该是哪一个
params.put("name",name); //name
另外,如果您也在服务器端使用一个密钥附加一个令牌以进行验证,那么效果会更好。这样,就不会有人匿名访问你的url了。我的伙计!就是这样,post值不匹配,啊,我现在觉得自己像个傻瓜,而不是最后,你可以在try块中调用你的函数,因为如果发生任何异常,如果没有用户名,就会发生,电子邮件不会返回,这将由catch块处理。如果所有内容都是从服务器获取的,您可以调用您的url,但如果缺少任何内容,只需显示一个异常。最后,感谢大家的提醒:)我们也正在努力实现一个用于验证的令牌。真的很感谢你的帮助,伙计!就是这样,post值不匹配,啊,我现在觉得自己像个傻瓜,而不是最后,你可以在try块中调用你的函数,因为如果发生任何异常,如果没有用户名,就会发生,电子邮件不会返回,这将由catch块处理。如果所有内容都是从服务器获取的,您可以调用您的url,但如果缺少任何内容,只需显示一个异常。最后,感谢大家的提醒:)我们也正在努力实现一个用于验证的令牌。非常感谢你的帮助