如何从Android调用基于PHP的Web服务?

时间:2017-03-07 09:58:01

标签: php android rest web-services http

我有一个简单的PHP Web服务,它将结果返回为JSON。

if($_SERVER["REQUEST_METHOD"]=="POST"){
    $arg1=$_POST["arg1"];
    processArgs($arg1);
}

processArgs($arg1){
    $result=doSomething($arg1);
    echo json_encode($result);
}

我可以使用HttpURLConnection从Android端调用它。但问题是HttpURLConnection似乎是一项非常低水平的工作。是否存在任何级别实现,我们可以避免编写相同的代码以使其异步并解析结果。

2 个答案:

答案 0 :(得分:0)

只需使用HttpClient,如下所示。

    HttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("http://your-host/comm.php");

    try {
        //add your post data
        List<NameValuePair> args = new ArrayList<NameValuePair>(2);
        args.add(new BasicNameValuePair("arg1", "your-arg-1"));

        httpPost.setEntity(new UrlEncodedFormEntity(args));

        //send your request
        HttpResponse response = httpClient.execute(httpPost);

    } catch (ClientProtocolException | IOException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

HttpURLConnection(java.net.HttpURLConnection)是Android中的默认HTTP客户端。

OkHttp,是另一个从Android 4.4开始为HttpUrlConnection提供动力的引擎。它提供了更简单的方法来自定义每个请求。

HttpURLConnection和OkHttp都处于较低的水平。因此,我们需要编写自己的代码,使其异步并一次又一次地解析结果。

另一方面,

Retrofit是一个高级实现,它使用OkHttp进行连接,Gson用于解析结果。它可以用来轻松地将HTTP API转换为Java接口。

因此,除非您有特定理由选择OkHttp(与基于HTTP的流式传输),否则Retrofit将是最佳选择。