【发布时间】:2013-11-19 21:42:13
【问题描述】:
我目前正在尝试从 android 应用程序向 google-app-engine 发送 http 请求,该请求应该由服务器接收,服务器将使用 URL 中传递的参数将新项目添加到数据存储区。
我写了这段代码:
private class AsyncConnection extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
try {
// creating the url
URL url = new URL(params[0]);
// opening the connection
URLConnection connection;
connection = url.openConnection();
// get data about the connection
HttpURLConnection httpConnection = (HttpURLConnection) connection;
int responseCode = httpConnection.getResponseCode();
// connection was properly established
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream input = httpConnection.getInputStream();
return input.toString();
} else {
Log.d("CONNECTION", "connection not HTTP_OK");
}
} catch (MalformedURLException e) {
Log.d("SMARTGAN", "MalformedURLException" ,e);
} catch (IOException e) {
Log.d("SMARTGAN", "IOException" ,e);
} catch (Exception e) {
Log.d("SMARTGAN", "Exception" ,e);
} finally { }
return null;
}
}
但是当我尝试执行它时,我在数据存储区中看不到任何新项目。 当我尝试使用它发送 URL 时,URL 本身和服务器上的代码都很好。我在日志中没有看到任何“连接不正常”消息的错误消息。
【问题讨论】:
-
在不回答您的实际问题的情况下,请确保在使用完 Streams 后始终使用 .close() 关闭它!
-
首先记录 responseCode 的值。它会告诉你这是什么类型的错误,因为这就是响应代码的用途。
-
那么,这个
input.toString()可能不符合您的要求。另外,请发布您的日志,以防万一。 -
关于close()和toString(),我写这段代码只是为了看看连接是否有效。关于记录 responseCode,我写道我没有看到任何 connection not ok 消息,因为 responseCode = HttpURLConnection.HTTP_OK
标签: android google-app-engine http