我正在创建一个使用Visual Basic 2010构建的服务器,该程序可以插入/更新/删除我使用的数据库。我创建了一个本地Web服务,用于将服务器上的数据库与Android中的数据库同步。
我使用以下Android代码:
package com.zelacroix.bukumenu;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.params.*;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class Sinc extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sinc);
Toast.makeText(getApplicationContext(), getKategori(), 5).show();
}
public String getKategori(){
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 60000);
HttpConnectionParams.setSoTimeout(httpParameters, 60000);
HttpClient client=new DefaultHttpClient(httpParameters);
HttpPost httpPost = new HttpPost("http://192.168.1.2:1924/TugasAkhir/Service.asmx/getKategori");
HttpResponse response;
String result="";
try
{
response=client.execute(httpPost);
HttpEntity entity= response.getEntity();
DataHandler dataHandler = new DataHandler();
if (entity!=null)
{
InputStream instream = entity.getContent();
result = dataHandler.convertStreamToString(instream);
instream.close();
}
} catch (ConnectTimeoutException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), e.toString(), 100).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), e.toString(), 100).show();
}
return result;
}
}
我收到错误:
org.apache.http.conn.httphostconnectexception connection to
``http://192.168.1.2:1924..... refused
供您参考.. 当我使用模拟器并将IP地址更改为10.0.2.2时,此代码成功运行。
当我访问托管的在线Web服务时,此代码也成功运行。 仅当我将Web服务作为本地服务运行并尝试使用我的笔记本电脑的IP(192.168.1.2)使用Android设备访问它时,它才会失败。
我正在使用WIFI。
如何解决此错误?
答案 0 :(得分:2)
尝试添加:
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
这有帮助吗?
答案 1 :(得分:0)
检查你的笔记本电脑ip和你的设备ip。
它应该在相同的子网掩码中
笔记本电脑和手机(android)设备的IP必须 192.168.X.X
答案 2 :(得分:0)
终于解决了..问题是Visual Studio 2010在设置IIS时如此复杂,然后我尝试在Visual Studio 2008上开发我的Web服务并且IIS工作正常! Android可以在不连接拒绝的情况下访问Web服务。
答案 3 :(得分:0)
遇到这个问题,但解决方案是一些熟悉的人会遇到的事情。
让<uses-permission android:name="android.permission.INTERNET"/>
在您的清单上。