【问题标题】:illegal character with 10.0.2.2 when I call my webservice from android ADB当我从 android ADB 调用我的网络服务时,带有 10.0.2.2 的非法字符
【发布时间】:2012-05-27 07:21:52
【问题描述】:

我使用 netbeans (Java EE) 创建了一个 Web 服务,并且我想与我的 Android 应用程序(使用 eclipse 制作)进行通信。

例如,当我尝试通信时,我通过浏览器调用我的网络服务:

localhost:9999/SupRails_Start/resources/rest/mail@gmail.com/password

...它给了我一个 JSON,...

对于 ADB,我称之为 URI:

10.0.2.2:9999/SupRails_Start/resources/rest/mail@gmail.com/password

但它给了我

java.lang.IllegalArgumentException: Illegal character in scheme at index 0: 10.0.2.2:0000/SupRails_Start/resources/rest/...

当我将 JSON(从浏览器接收)复制粘贴到一个 php 页面并将其托管在网络上时,它可以完美运行!

这是我的 Android 项目的一部分:

WebService webService = new WebService("10.0.2.2:9999/SupRails_Start/resources/rest/wil.nad@gmail.com/root");
        Map<String, String> params = new HashMap<String, String>();
        String temp = webService.webGet("", params);
        Log.v("", "JSON received = "+temp);

请帮助我,我不明白我的错误...非常感谢!

【问题讨论】:

    标签: java android web-services jakarta-ee android-emulator


    【解决方案1】:

    您的网络服务 URL 不完整。有效 URL 的语法如下:

    scheme://domain:port/path?query_string#fragment_id
    

    每个 URL 都由以下部分组成:方案名称(通常 称为协议),后跟一个冒号,两个斜杠,[注 1] 然后, 取决于方案,服务器名称(exp. ftp.、www.、smtp. 等) 后跟一个点 (.),然后是一个域名[注 2](或者,IP 地址),端口号,要获取的资源的路径或 程序要运行,然后,对于诸如通用网关接口之类的程序 (CGI) 脚本、一个查询字符串、[7][8] 和一个可选片段 标识符。

    [Wikipedia]

    所以改变这个:

    new WebService("10.0.2.2:9999/SupRails_Start/resources/rest/wil.nad@gmail.com/root")
    

    对此:

    new WebService("http://10.0.2.2:9999/SupRails_Start/resources/rest/wil.nad@gmail.com/root")
    

    【讨论】:

    • @DaToop :感谢您的快速回答。我已经尝试过,但它对我不起作用:-/
    • java.lang.IllegalArgumentException:索引 0 处的方案中存在非法字符:关于此异常,这是实际问题。您确定更改后您实际编译并正确部署了吗?
    • 是的,它在我的 JEE 浏览器上运行,并且 android 应用程序与我发送 JSON 的 php 页面配合得非常好。所有这些都单独工作,但不能一起工作:-/
    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多