0

我正在这里做一个项目并且遇到了一个问题。它之前工作正常,但我正在做的是向 url 发送请求并期待 JSON 响应。但是,当我检查响应时,它会一直返回为空。这以前不是问题,但随机开始发生。任何帮助将不胜感激!

此外,我还有另一个真正执行 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();

    }
}
4

1 回答 1

0

如果您返回的 JSON 为空,我的第一个猜测是验证您是否点击了正确的 URL。如果是这种情况,那么 api 方面可能存在问题。您可能希望在应用程序上下文之外、在 REST 客户端或 Web 浏览器中测试此 HTTP 请求。

问候。

于 2014-10-29T15:55:54.187 回答