我正在处理一个项目,遇到了一个问题。它以前工作得很好,但我正在做的是向url发送请求,并期待JSON响应。然而,当我检查响应时,它一直返回为null。这在以前不是一个问题,而是随机开始发生的。任何帮助都将不胜感激!"
此外,我还有另一个类,它实际处理url请求。
第一个位是登录页面上的onclick侦听器。它获取文本字段并将它们转换为字符串。登录的工作方式是必须将所有信息推送到URL中,这就是为什么它是这样设置的。
bt.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String account = acct.getText().toString();
String uname = user.getText().toString();
String passWord = pass.getText().toString();
url = ap+"&t2mdeveloperid="+id+account+"&t2musername="+uname+"&t2mpassword="+passWord;
new Login().execute();
}
}
);
}
好的,这是请求运行的异步任务。
private class Login extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute(){
super.onPreExecute();
//Here we will display our progress bar. This is dependent on each page.
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Loading Talk2M Account");
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0){
//We need to create an object to call our service handler to make our http request.
ServiceHandler login = new ServiceHandler();
//Now we need to make a request to the url as well as recieve the response.
String response = login.makeServiceCall(url, ServiceHandler.GET);
Log.d("Response: ", "> " + response);
try{
JSONObject jsonObj = new JSONObject(response);
String session = jsonObj.getString(TAG_SESSION);
}catch(JSONException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result){
super.onPostExecute(result);
if(pDialog.isShowing())
pDialog.dismiss();
}
}
如果您返回的JSON为null,我的第一个猜测是验证您是否命中了正确的URL。如果是这种情况,那么api方面可能存在问题。您可能希望在应用程序的上下文之外,在REST客户端或web浏览器中测试此HTTP请求。
谨致问候。