当前位置: 首页 > 面试题库 >

Android连接到本地主机

谷泳
2023-03-14
问题内容

由于wamp服务器,我试图将我的android应用程序连接到本地主机url,但它不起作用。我的目标是获取json数据并解析这些数据。对于我的测试,我使用的是设备而不是模拟器,并且使用AndroidManifest.xml中的权限:

<uses-permission android:name="android.permission.INTERNET" />

我的网址看起来像这样:

String url = "http://10.0.2.2:8080/tests/PhpProject1/connectionBDD.php";

我试过了 :

http://localhost/
http://10.0.2.2:8080/
http://10.0.2.2/

但是到目前为止,它从未起作用:

    java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)

    failed to connect to /10.0.2.2 (port 8080): connect failed: ETIMEDOUT (Connection timed out)

    java.net.ConnectException: failed to connect to /10.0.2.2 (port 80): connect failed: ETIMEDOUT (Connection timed out)

然后我尝试了在互联网上找到的json url测试:http :
//headers.jsontest.com/

它的工作真的很好,我在这个地址得到了json数据。所以我想我的代码很好,这里的问题是我的本地主机URL,我不知道它的确切格式是什么。我读了很多有关它的线程,但是我没有找到解决方案。

这是我的代码:

主要活动 :

public class MainActivity extends Activity {
    private String url = "http://10.0.2.2:8080/tests/PhpProject1/connectionBDD.php";

    private ListView lv = null;
    private Button bGetData;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final JsonDownloaderTask task = new JsonDownloaderTask(this);
        lv = (ListView) findViewById(R.id.list);

        bGetData = (Button)findViewById(R.id.getdata);
        bGetData.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {               
                task.execute(url);                      
            }
        });
    }

    public void jsonTaskComplete(JSONArray data){
        //todo
    }   
}

AsyncTask:

public class JsonDownloaderTask extends AsyncTask<String, String, JSONArray> {

    MainActivity ma;

    public JsonDownloaderTask(MainActivity main){
        ma = main;
    }

    @Override
    protected JSONArray doInBackground(String... url) {
        JSONParser jParser = new JSONParser();
        // Getting JSON from URL
        JSONArray jsonArray = null;
        try {
            jsonArray = jParser.getJSONFromUrl(url[0]);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonArray;        
    }

    protected void onPostExecute(JSONArray data){

        ma.jsonTaskComplete(data);
    }
}

JSONParser:

public class JSONParser {
    String data = "";
    JSONArray jsonArray = null;        
    InputStream is = null;

    public JSONParser(){}

    // Method to download json data from url
    public JSONArray getJSONFromUrl(String strUrl) throws IOException{
        try{
            URL url = new URL(strUrl);

            // Creating an http connection to communicate with url
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

            // Connecting to url
            urlConnection.connect();

            // Reading data from url
            is = urlConnection.getInputStream();

            BufferedReader br = new BufferedReader(new InputStreamReader(is));

            StringBuffer sb  = new StringBuffer();

            String line = "";
            while( ( line = br.readLine())  != null){
                sb.append(line);
            }
            is.close();
            data = sb.toString();

            //br.close();

            jsonArray = new JSONArray(data);

        }catch(Exception e){
            Log.d("Exception while downloading url", e.toString());
        }finally{
            is.close();
        }

        return jsonArray;
    }
}

问题答案:

首先,您必须在eclipse设置中绑定运行服务器的计算机的IP地址。

您可以这样进行。

Eclipse运行配置

右键单击PHPeclipse中的项目,然后单击“运行配置”,然后在Web Application其中将找到Argument选项卡的位置。现在,在此处提供运行服务器的计算机的端口和LAN IP地址。

像这样 --port = 8888 –address = 192.168.1.6
然后将URL更新为http://192.168.1.6:8080/tests/PhpProject1/connectionBDD.php

在我的情况下,这是我的LAN
IP地址192.168.1.6,您将必须使用诸如这样的网络命令找到它ipconfigifconfig并使用该IP地址。



 类似资料:
  • 我试图连接我的Android应用程序到本地主机网址感谢wamp服务器,但它不工作。我在这里的目标是获取json数据并解析这些数据。对于我的测试,我使用的设备不是仿真器,我使用权限在Androidanifest.xml: 我的url如下所示: 我试过: 但迄今为止,它从未奏效: 然后我尝试了一个在互联网上找到的json url测试:http://headers.jsontest.com/ 它工作得非

  • 试图连接一个简单的JMX监控。托管应用程序和监控工具位于同一台服务器上。当试图连接一个错误 00:30:55610致命http-8080-6 SiteListener:makeJmxConnection:99-java.io。IOException:检索RMIServer存根失败:javax.naming。ServiceUnavailableException[根异常为java.rmi.Conne

  • 这让我很困惑。 我有一个运行nginx-php-fpm的本地开发设置,我在其中使用.localhost作为每个项目的工作域。昨天Chrome停止了与本地域的合作。相反,它只是返回被拒绝的连接。DevTools将错误显示为net::ERR\u CONNECTION\u RESET。 访问http://127.0.0.1工作,但当然不适用于本地项目。 Safari继续与.localhost一起工作。

  • 问题内容: 我正在运行一个docker mysql映像,以下是docker-compose.yml文件的外观: 这很好。 我的问题是:如何从主机(我的Macbook)上的命令行mysql客户端连接到在该容器上运行的MySQL实例? 澄清: 我有一台装有Docker的Macbook 我有一个带有mysql的docker容器 我想从Macbook的终端连接到上述容器上运行的mysql实例 我不想使用命

  • 我想通过ssh隧道与具有localhost访问权限的用户连接到远程MySQL。 我用这个做隧道: 和这个连接到主机: 我得到的错误是: 问题是用户“user”@“remote-host”(或“user”@“%”)不存在,只有“user”@“localhost”存在。 有没有办法强迫远程主机在不进行服务器端修改的情况下认为我来自本地主机?这是我通过ssh隧道进行连接的唯一原因。 注: 如果要连接此命

  • 我正在上工作,我对webservice没有任何想法。我看起来相同的示例网络服务(如实时SOAP服务)它工作正常。我要在localhost运行网络服务,我不知道我的网址、命名空间和方法名称是否被正确声明。 下面的代码是我的WSDL代码 调用上述服务的我的android代码: 请找个人帮我做这件事。。