【发布时间】:2012-10-09 19:31:35
【问题描述】:
我在服务器上有一个 php 脚本,它接收 get 请求,并将内容邮寄出去。 所以假设我们有http://url.com/testmail.php?message=somemessage
“消息”的内容将通过电子邮件发送。
我希望我的应用能够调用此脚本,并在请求中插入它自己的消息。它将主要用于用户反馈。我知道使用POST会更好,如果有一些可以原生处理邮件的android功能,请赐教,因为我是新手。
这是我目前在主要活动“onCreate”中的代码,它正在生成异常:
HttpClient httpClient = new DefaultHttpClient();
String url = "http://someurl/testmail.php?message=eventualjavavariable";
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse response = httpClient.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
ByteArrayOutputStream out = new ByteArrayOutputStream();
entity.writeTo(out);
out.close();
String responseStr = out.toString();
// do something with response
} else {
// handle bad response
}
} catch (ClientProtocolException e) {
// handle exception
} catch (IOException e) {
// handle exception
}
我还在我的 Android 清单文件中添加了这一行:
<uses-permission android:name="android.permission.INTERNET"/>
我做错了什么?
这是我的 LogCat:
10-09 15:12:33.185: E/AndroidRuntime(5561): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.fragments/com.example.android.fragments.MainActivity}: android.os.NetworkOnMainThreadException
10-09 15:12:33.185: E/AndroidRuntime(5561): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-09 15:12:33.185: E/AndroidRuntime(5561): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-09 15:12:33.185: E/AndroidRuntime(5561): at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-09 15:12:33.185: E/AndroidRuntime(5561): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
【问题讨论】:
-
将网络相关操作从
onCreate()中移除,放到AyncTask中。
标签: android