Http Post请求在Android异步任务中提供空值?

Http Post请求在Android异步任务中提供空值?,android,apache,http,http-post,Android,Apache,Http,Http Post,API的post方法不起作用。NewTask.execute()给出错误“无法解析符号”。如果删除这个NewTask.execute(),API将不返回任何内容 makePostRequestAsyncTask NewTask=新的makePostRequestAsyncTask(); NewTask.execute() 我有两个问题: 为什么它不能解决符号错误 为什么删除NewTask.execute()时不返回任何内容 p、 我是否正确使用异步任务?因为我是初学者,所以不能肯定。谢谢

API的post方法不起作用。NewTask.execute()给出错误“无法解析符号”。如果删除这个NewTask.execute(),API将不返回任何内容

makePostRequestAsyncTask NewTask=新的makePostRequestAsyncTask(); NewTask.execute()

我有两个问题:

  • 为什么它不能解决符号错误

  • 为什么删除NewTask.execute()时不返回任何内容

  • p、 我是否正确使用异步任务?因为我是初学者,所以不能肯定。谢谢

        public void makePostRequest()
    {
        class makePostRequestAsyncTask extends AsyncTask<Void, Void, String> {
    
    
            @Override
            protected String doInBackground(Void... params) {
    
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost =
    
                try {
                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
                } catch (UnsupportedEncodingException e) {
                    // log exception
                    e.printStackTrace();
                }
    
    
                //making POST request.
                try {
                    HttpResponse response = httpClient.execute(httpPost);
                    BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
                    String response_body = reader.readLine();
                    Log.d("Http Post Response:", String.valueOf(response));
                  //  HttpResponse response = httpClient.execute(httpPost);
                    // write response to log
    
                  //  Log.d("Http Post Response:", response.toString());
                } catch (ClientProtocolException e) {
                    // Log exception
                    e.printStackTrace();
                } catch (IOException e) {
                    // Log exception
                    e.printStackTrace();
                }
    
                return null;
            }
            @Override
            protected void onPostExecute(String result) {
                super.onPostExecute(result);
    
                if(result.equals("working")){
                    Toast.makeText(getApplicationContext(), "HTTP POST is working...", Toast.LENGTH_LONG).show();
                }else{
                    Toast.makeText(getApplicationContext(), "Invalid POST req...", Toast.LENGTH_LONG).show();
                }
            }
            makePostRequestAsyncTask NewTask= new makePostRequestAsyncTask();
            NewTask.execute();
    
        }
    
    }
    
    public void makePostRequest()
    {
    类makePostRequestAsyncTask扩展了AsyncTask{
    @凌驾
    受保护字符串doInBackground(无效…参数){
    HttpClient HttpClient=新的DefaultHttpClient();
    HttpPost HttpPost=
    试一试{
    setEntity(新的UrlEncodedFormEntity(nameValuePair));
    }捕获(不支持的编码异常e){
    //日志异常
    e、 printStackTrace();
    }
    //提出邮寄请求。
    试一试{
    HttpResponse response=httpClient.execute(httpPost);
    BufferedReader=新的BufferedReader(新的InputStreamReader(response.getEntity().getContent(),“UTF-8”);
    字符串响应_body=reader.readLine();
    Log.d(“Http Post响应:”,String.valueOf(响应));
    //HttpResponse response=httpClient.execute(httpPost);
    //将响应写入日志
    //Log.d(“Http Post响应:,Response.toString());
    }捕获(客户端协议例外e){
    //日志异常
    e、 printStackTrace();
    }捕获(IOE异常){
    //日志异常
    e、 printStackTrace();
    }
    返回null;
    }
    @凌驾
    受保护的void onPostExecute(字符串结果){
    super.onPostExecute(结果);
    如果(结果等于(“工作”)){
    Toast.makeText(getApplicationContext(),“HTTP POST正在工作…”,Toast.LENGTH\u LONG.show();
    }否则{
    Toast.makeText(getApplicationContext(),“无效的POST请求…”,Toast.LENGTH_LONG.show();
    }
    }
    makePostRequestAsyncTask NewTask=新的makePostRequestAsyncTask();
    NewTask.execute();
    }
    }
    
    您正在
    异步任务内部初始化和执行

       }
        makePostRequestAsyncTask NewTask= new makePostRequestAsyncTask();
        NewTask.execute();
    }// AsyncTask your class close here
    
    do改为在异步任务结束后执行

        }
    }// AsyncTask your class close here
    makePostRequestAsyncTask NewTask= new makePostRequestAsyncTask();
        NewTask.execute();
    

    谢谢你,伙计。成功了。但是,现在代码给出了一个错误“java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'boolean java.lang.String.equals(java.lang.Object)'”。对此有什么想法吗…为什么它从后台方法返回空值?它实际上是什么?正如我提到的,我是一个初学者,所以也不知道很多术语。如何解决这个问题?搜索谷歌。!!读取并发布完整错误日志。Google只是识别了发生的原因,而不是治疗方法或原因。您在
    doInBackground
    中返回空值。无论您从
    doInBackground
    返回什么,都会被
    onPostExecute