我有一个简单的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
似乎是一项非常低水平的工作。是否存在任何级别实现,我们可以避免编写相同的代码以使其异步并解析结果。
答案 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将是最佳选择。