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