【问题标题】:How can you send a web request from inside an Android app?如何从 Android 应用程序内部发送 Web 请求?
【发布时间】:2012-03-23 04:55:01
【问题描述】:

请原谅我在该主题上缺乏知识,但我对网络、PHP、Web 请求等知识知之甚少。本质上,我想使用$_GET 变量将字符串发送到网站以进行日志记录。如何使用此方法从应用程序内部发送字符串?

(我不能在另外 6 个小时内自行回答,但如果可以的话,这就是它的样子,当然答案中有代码。只是不想从原来的问题。)

最后,代码found here 起作用了。 应用程序向 Web 服务器发送请求,然后将 $_GET 变量中的字符串附加到日志文件中!不过花了几个小时才弄明白。 :l

【问题讨论】:

    标签: java android http get


    【解决方案1】:

    您可以使用Apache Commons HttpClient 库发出 HTTP 请求。

    HTTP 请求 URI 由协议方案、主机名、可选端口、资源路径、可选查询和可选片段组成。

    HttpGet httpget = new HttpGet(
         "http://www.google.com/search?hl=en&q=httpclient&btnG=Google+Search&aq=f&oq=");
    

    也可以从单个参数生成查询字符串:

    List<NameValuePair> qparams = new ArrayList<NameValuePair>();
    qparams.add(new BasicNameValuePair("q", "httpclient"));
    qparams.add(new BasicNameValuePair("btnG", "Google Search"));
    qparams.add(new BasicNameValuePair("aq", "f"));
    qparams.add(new BasicNameValuePair("oq", null));
    URI uri = URIUtils.createURI("http", "www.google.com", -1, "/search", 
        URLEncodedUtils.format(qparams, "UTF-8"), null);
    HttpGet httpget = new HttpGet(uri);
    System.out.println(httpget.getURI());
    

    【讨论】:

    • 但是如何让应用程序使用该链接实际将请求发送到站点?
    • 你用一个HttpClient的实现来执行它,例如:new DefaultHttpClient().execute(httpget);here
    【解决方案2】:

    wanstein 是对的,但 URIUtils.createURI 现在已弃用(4.2.1),所以最好使用 URIBuilder:

    URI uri = new URIBuilder()
                    .setFragment("http")
                    .setHost(HOST)
                    .setPath(path)
                    .setQuery(URLEncodedUtils.format(qparams, "UTF-8"))
                    .build();
    

    【讨论】:

    • http 不是 uri 的片段而是它的方案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    相关资源
    最近更新 更多