gpt4 book ai didi

android - 有时我的应用程序因 UnknownHostException 而崩溃

转载 作者:行者123 更新时间:2023-11-30 04:10:03 24 4
gpt4 key购买 nike

在我的应用程序中,我可以访问网络服务器。它在某些手机上运行良好,但在 Samsung Galaxy 中测试时型号 - GT-S5830i安卓版本 - 2.3.6它一直显示未知主机异常。我已经检查了浏览器中的 url,它工作正常。

private void submitUploadData(String url ,Map<String, String> param) throws IOException 
{
URL siteUrl;
try {
siteUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);

DataOutputStream out = new DataOutputStream(conn.getOutputStream());

Set getkey = param.keySet();
Iterator keyIter = getkey.iterator();
String content = "";
for(int i=0; keyIter.hasNext(); i++) {
Object key = keyIter.next();
if(i!=0) {
content += "&";
}
content += key + "=" + param.get(key);
}
out.writeBytes(content.trim());
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
while((line=in.readLine())!=null) {
System.out.println(line);
}
in.close();
//Intent home = new Intent(SyncHttp.this,TimeAndExpensesSKActivity.class);
//startActivity(home);
db.updateTimeExported(1);
db.updateExpensesExported(1);
db.close();
db.close();

if(db.getLogCount()==0){
db.insertSyncDateDetails(getDateandTime());}
else{
db.updateSyncDateDetails(1, getDateandTime());}


} catch (MalformedURLException e) {
e.printStackTrace();
}
this.setResult(FINISH_RESULT);
db.close();
}

我已经添加了权限

 <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

我真的很困惑为什么会出现这个异常。

感谢您的帮助。

最佳答案

我的应用也是这样做的。这通常是由网络连接不稳定引起的。我所做的是捕获此 UnknownHostException 并以某种方式修改代码,如果 UnknownHostException 发生,我会在休眠几毫秒后再次尝试重新获取 URL。

基本算法是这样的:

private void submitUploadData(String url ,Map<String, String> param) throws IOException 
{
URL siteUrl;
boolean isDataSubmitted = false;
while(!isDataSubmitted){
try {
//do your complicated http process
isDataSubmitted = true;
} catch(UnknownHostException uhe){
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}

关于android - 有时我的应用程序因 UnknownHostException 而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10997289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com