我的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)。
CLASS FILE:
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 Manifest:
<?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" />
错误LogCat:
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
答案 0 :(得分:2)
好的转到Apache httpd.conf(位于Apache文件夹中):并搜索
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
并检查第二行是否为Deny,如果是,则将其更改为:
Allow from all
然后重新启动Appache服务器,并告诉我feadback。
修改
在您的真实设备中试用:
转到CMD并在IPv4下键入ipconfig
获取IP地址并更改它看起来类似于此的IP:
http://192.168.0.106:8080/mylibman/data.php // similar to this.
关闭计算机中的防火墙和任何防病毒应用程序
请给我反馈意见。
答案 1 :(得分:1)
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正在侦听servername localhost和端口8080(允许来自httpd.conf中的所有人)。
我的本地IP类似于192.168.0.XXX/folder/my-page-here
答案 2 :(得分:1)
您可以使用真实IP地址访问虚拟服务器。看看我的回答here。我希望它有所帮助。
答案 3 :(得分:0)
如果您的SDK版本低于9,那么为SDK版本添加上面的代码,他们在Apache更新httpd.conf中的一些更改作为来自所有的行拒绝。替换句子允许来自所有并重新启动WAMP服务器的服务然后使用{{ 1}}地址或10.0.2.2
端口号并在Android AndroidManifest文件中包含权限行
10.0.2.2:8080
答案 4 :(得分:0)
我通过在网址<:p>中编写cmd -> ipconfig
的IP地址来解决此问题
HttpPost httppost = new HttpPost( "http://192.168.x.x/mylibman/data.php" );