【发布时间】:2016-01-27 10:52:21
【问题描述】:
我正在尝试发布一个带有参数的 HTTP URL。我已经使用appendQueryPrameters附加了参数但是build()之后的语句被跳过并且控制来自AsyncTask。下面是AsyncTask的th sn-p
private class MyAsyncTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String givenDob = params[0];
String givensurname = params[1];
String givenCaptcha = params[2];
String response = "";
try {
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("dateOfBirth", givenDob)
.appendQueryParameter("userNameDetails.surName", givensurname)
.appendQueryParameter("captchaCode", givenCaptcha);
String query = builder.build().toString();
PrintWriter out = new PrintWriter(connection.getOutputStream());
out.print(query);
out.close();
int responseCode = connection.getResponseCode();
Log.d("responseCode", String.valueOf(responseCode));
/* BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(connection.getOutputStream(), "ISO-8859-1"));
writer.write(query);
writer.flush();
writer.close();
*/
connection.getOutputStream().close();
if (responseCode == HttpsURLConnection.HTTP_OK) {
String line;
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = br.readLine()) != null) {
response += line;
Log.d("response", response);
}
} else {
response = "";
}
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
@Override
protected void onPostExecute(String s) {
Log.d("res", s);
}
}
我也尝试使用 PrintWriter。但它仍然跳过行 String query = builder.build().toString(); 之后的语句的执行
PS:我在另一个 AsyncTask 中打开了 HttpURLconnection,并在 onCreate() 上调用了它。下面是代码。
URL url = new URL("https://myurl.com/path1/path2/path3.html");
connection = (HttpsURLConnection) url.openConnection();
connection.setReadTimeout(10000);
connection.setConnectTimeout(15000);
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
使用this作为参考
【问题讨论】:
-
你检查过logcat那里打印的异常吗?
-
不,没有例外。我也尝试设置断点进行调试。
标签: android android-asynctask httpurlconnection