Http Post 请求在 Android 异步任务中给出空值?
Http Post request giving null in Android Async Task?
API 的 post 方法无效。 NewTask.execute() 给出了 "cannot resolve the symbol" 的错误。如果我删除这个 NewTask.execute(), API returns 什么都没有。
makePostRequestAsyncTask NewTask=新的makePostRequestAsyncTask();
NewTask.execute();
我有两个问题:
为什么给出无法解析符号错误?
为什么当 NewTask.execute() 被删除时它没有返回任何东西?
p.s:我是否正确使用了异步任务?由于我是初学者,所以不能确定。谢谢
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();
}
}
您正在 AsyncTask
内部进行初始化和执行。
}
makePostRequestAsyncTask NewTask= new makePostRequestAsyncTask();
NewTask.execute();
}// AsyncTask your class close here
do 表示在关闭 AsyncTask 之后
}
}// AsyncTask your class close here
makePostRequestAsyncTask NewTask= new makePostRequestAsyncTask();
NewTask.execute();
API 的 post 方法无效。 NewTask.execute() 给出了 "cannot resolve the symbol" 的错误。如果我删除这个 NewTask.execute(), API returns 什么都没有。
makePostRequestAsyncTask NewTask=新的makePostRequestAsyncTask(); NewTask.execute();
我有两个问题:
为什么给出无法解析符号错误?
为什么当 NewTask.execute() 被删除时它没有返回任何东西?
p.s:我是否正确使用了异步任务?由于我是初学者,所以不能确定。谢谢
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();
}
}
您正在 AsyncTask
内部进行初始化和执行。
}
makePostRequestAsyncTask NewTask= new makePostRequestAsyncTask();
NewTask.execute();
}// AsyncTask your class close here
do 表示在关闭 AsyncTask 之后
}
}// AsyncTask your class close here
makePostRequestAsyncTask NewTask= new makePostRequestAsyncTask();
NewTask.execute();