我的 PC 上安装了一台 apache 服务器,其中托管一个 PHP 文件。
然后我尝试使用 eclipse 连接到该文件,但它总是给我以下错误
connection to http://10.0.2.2:8080 refused.
我尝试将地址更改为以下地址,但一直遇到类似的错误。
http://10.0.2.2
http://127.0.0.1
http://localhost
任何人都可以帮助我吗?
编辑:仅供参考,我可以毫无问题地访问远程服务器(例如 www.mydomain.com)。
班级档案:
HttpClient httpclient = new DefaultHttpClient();
Log.d("test","t0");
HttpPost httppost = new HttpPost("http://10.0.2.2:8080/mylibman/data.php");
Log.d("test","t1");
HttpResponse response = httpclient.execute(httppost); // error here
Log.d("test","t2");
Android 清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.migrationdesk.mylibman"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
错误日志目录:
11-16 02:02:20.803: E/log_tag(1427): Error in http connection org.apache.http.conn.HttpHostConnectException: Connection to http://10.0.2.2:8080 refused
11-16 02:02:20.803: E/log_tag(1427): Error converting result java.lang.NullPointerException: lock == null
11-16 02:02:20.803: E/log_tag(1427): Error parsing data org.json.JSONException: End of input at character 0 of
好吧,转到 Apache httpd.conf(位于 Apache 文件夹中):并搜索
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
检查第二行是否为Deny,如果是则将其更改为:
Allow from all
然后重新启动Apache服务器,并告诉我反馈。
编辑
在您的真实设备中尝试一下:
转到 CMD 并在 IPv4 下输入
ipconfig
,获取 IP 地址并更改 IP,它将类似于以下内容:
http://192.168.0.106:8080/mylibman/data.php // similar to this.
关闭 PC 中的防火墙和所有防病毒应用程序
请给我反馈。
Mike在这个问题上给了我很多帮助。所以这里是我避免这种情况的步骤连接被拒绝。
1) 添加if来测试Android SDK。似乎在新版本中,您必须明确允许在不同线程中打开连接:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
System.out.println("*** My thread is now configured to allow connection");
}
...
2) 为您的端口添加例外:
在您的情况下允许端口入站连接
8080
3)通过本地浏览所需的网址来测试您的连接
使用浏览器并尝试在本地访问
http://10.0.2.2:8080
4)在清单文件中添加互联网权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yourapp"
android:versionCode="1"
android:versionName="1.1" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET"/>
我正在使用 Wamp,它的 apache 正在监听服务器名 localhost 和端口 8080(允许来自 httpd.conf 中的所有端口)。
我的本地 IP 类似于 192.168.0.XXX/folder/my-page-here
您可以使用您的真实IP地址访问您的虚拟服务器。看看我的回答这里。我希望它有帮助。
如果您的 SDK 版本低于 9,则为 SDK 版本添加上面的代码,在 Apache 中进行一些更改,将 httpd.conf 更新为行拒绝所有..替换该句子允许所有并重新启动 WAMP 服务器的服务,然后使用
10.0.2.2
地址或 10.0.2.2:8080
端口号并在 Android AndroidManifest 文件中包含权限行
<uses-permission
android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission>
我通过在 url 中写入
cmd -> ipconfig
中的 IP 地址来解决此问题:
HttpPost httppost = new HttpPost( "http://192.168.x.x/mylibman/data.php" );