Android 连接到本地主机

2024-02-25

我试图通过 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/ http://headers.jsontest.com/

它工作得非常好,我在这个地址得到了 json 数据。所以我想我的代码很好,这里的问题是我的本地主机网址,我不知道它的确切形式应该是什么。 我阅读了很多有关它的帖子,但没有找到解决方案。

这是我的代码:

主要活动 :

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
    }   
}

异步任务:

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);
    }
}

JSON解析器:

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;
    }
}

IP 地址 10.0.2.2 用于从模拟器获取数据。 本地主机将始终指向运行应用程序的模拟器/Android 设备。 要让您的设备从您的电脑获取数据,它应该位于同一网络中(通过 WiFi 连接到您的路由器),并且您应该使用电脑的本地 IP 地址(通常是 192.168.1.x 号码)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 连接到本地主机 的相关文章

随机推荐

  • 添加新节点时,链表的浅拷贝不反映更改

    I have done a lot of readings but seems like I can t clear my confusion without asking here Based on the diagram when I
  • 全部连接关闭时的任务

    我正在尝试使用 Task WhenAll 执行多个 SqlDataReaders 但是当任务等待时我得到 System InvalidOperationException 无效操作 连接 关闭了 创建任务 List
  • 在哪里可以找到 Visual Studio 中安装的 TypeScript 版本?

    也许这是显而易见的 但我检查了所有地方 除了正确的地方 并用谷歌搜索了它 没有什么 如果您只为 Visual Studio 安装了 TypeScript 则 开始Visual Studio 命令提示符 https msdn microsof
  • Apache代理负载均衡后端服务器故障检测

    这是我的场景 由我的前任设计 两台 Apache 服务器为多个混合后端 Web 服务器 Apache IIS Tomcat 等 提供反向代理服务 有些网站我们有多个后端 Web 服务器 在这些情况下 我们会执行以下操作
  • 恢复 Github Desktop 中丢失的隐藏更改 (Windows 10)

    作为初学者使用 Github Desktop Windows 10 上的 v 2 9 6 当在分支之间来回移动时 我会存储更改以将其保留在分支上以供以后使用 但是连续执行两次 它实际上会覆盖并删除之前的存储 而不是将更改堆叠到存储中 因此我
  • Visual Studio 自动完成 C++ 的 Doxygen 标签

    有没有办法让 Visual Studio 自动将 doxygen 标签放入 C 源文件中 我的意思是例如这段代码 int foo bool p 如果我输入 在其之上 Visual Studio 自动生成以下行
  • 负整数返回零

    一位朋友只是抛出了一些类似于以下 C 代码的代码 int i return i lt 0 0 i 这让我思考 有什么 不同 的方式来返回负整数零或当前正值 更具体地说 如果可能的话 我正在寻找按位运算 顺便说一句 我知道Math Max 0
  • 如何在这个程序中使用枚举?

    f open Student dat r opens Student dat file roll1 input Enter roll to be found to find a record in a list using a roll n
  • 移动浏览器上的“自动播放”HTML5 音频播放器

    我正在为移动用户创建一个 HTML5 音乐网站 目标是让它完全在移动浏览器中运行 问题是 当用户选择要播放的曲目时 他们会被带到 播放器 页面 然后我在 HTML5 音频元素中进行 AJAX 并将 autoplay 属性设置为 true 这
  • jQuery 从元素中删除特定文本

    我想从我的网站的元素中删除文本 By 我希望文本的其余部分保留在那里 我怎样才能用 jQuery 实现这一点 谢谢 The HTML div By Anonymous From Minnesota div 我希望它只是 div Anonym
  • JPanel 和 CardLayout 出现 NullPointerException 错误

    我正在为课堂开发酒店管理软件 我的代码遇到了一些问题 此时 我只是尝试将我在单独的类中创建的 JPanel 添加到我的主 gui 中 任何帮助将不胜感激 谢谢 Exception in thread main java lang NullP
  • Python语音识别速度很慢

    我目前正在开发一个智能助手程序 基本上它只是听用户说的话 并据此对代码执行某些操作 直到今天我切换到笔记本电脑时 它都运行良好 该程序不会打印出任何错误 但它也不会打印出我所说的内容 我正在使用Python语音识别 https pypi o
  • 无法使用 PHP 和 Nginx 让 Zorba 在 Windows 7 上运行

    我正在尝试在 Windows 7 计算机上安装 Zorba 的帮助指示 http zorba xquery com doc zorba 2 0 zorba html php windows tutorial html 我已经完成 验证 Zo
  • 将 MSSQL 中除第一个字符和空格之外的字符串的所有字符替换为星号

    我想知道是否可以通过函数对 mssql 中的敏感数据进行哈希处理 并为所有字段保留第一个字符 原样 例子 Jon Kirk 名字应提取为 J K 我首先发布了一个递归解决方案 这更快 declare name varchar 20 Jon
  • Django 的 Capistrano

    有谁知道 Django 中 Capistrano Webistrano 的等效版本吗 Fabric http fabfile org是一个基于Python的应用部署系统 它可用于部署 Django 项目
  • git 没有完全退出(退出代码 128)[重复]

    这个问题在这里已经有答案了 我收到这个错误 尝试了所有解决方案如何解决 TortoiseGit 上的 git 未完全退出 退出代码 128 错误 https stackoverflow com questions 9617336 how t
  • Rails 3.1,capybara-webkit,如何在链接内执行javascript?

    我可以在与水豚的链接中执行javascript吗click link next page 该链接如下所示 a href Next Question a 我在 github 的 capybara 上读到 我可以通过单击提交按钮来提交表单 如下
  • OpenCV 中如何知道图像是否为 RGB?

    我使用 OpenCV 库用 C 编写了一个程序 该程序从网络摄像头录制视频 然后将其分割成帧 我想知道帧是否为 RGB 因为我想访问每个像素的 RGB 属性 用于捕获的编解码器是 CV FOURCC M J P G 如何获取 RGB 色彩空
  • pycharm中的源和资源根是什么?

    我正在开发一个关于 NLP 的项目 我有一个很大的语料库和一些代码 我想在我的项目中将它们分开 但我想知道选择正确的名称是什么 数据与代码就像汇编中的数据段和代码段 或者 来源和资源正如我的一位朋友所坚持的那样 这是正确的术语 我还在 py
  • Android 连接到本地主机

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