我试图将okhttpclient与okhttp3一起使用,但它返回一个空值。
这是我的代码:
OkHttpClient client = new OkHttpClient();
HttpUrl.Builder urlBuilder = HttpUrl.parse("http://www.test.com/get_data.php").newBuilder();
urlBuilder.addEncodedQueryParameter("GroupName", groupName);
String url = urlBuilder.build().toString();
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
String responseData = response.body().string();
JSONObject jsonObj = new JSONObject(responseData);
jArray = jsonObj.getJSONArray("result");
} catch (JSONException e) {
}
}
});
然后responseData返回{"结果":[]}
我尝试使用上面相同的url,但使用不同的httpClient方法,它返回我想要的值,这里是httpclient代码:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.test.com/get_data.php");
httppost.setEntity(new UrlEncodedFormEntity(data));
HttpResponse response = httpclient.execute(httppost);
Log.i("postData", response.getStatusLine().toString());
HttpEntity entity = response.getEntity();
StringBuilder sb = new StringBuilder();
String result = null;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()), 65728);
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
if(sb.toString().trim().length() > 0) {
result = sb.toString();
return result;
}
}
请帮助我,有okhttp经验的人,为什么我需要okhttp? 因为httpdient已在sdk 23中弃用,谢谢。
答案 0 :(得分:0)
您没有在客户端对象上执行。请尝试添加以下代码段:
Response response = client.newCall(request).execute();
return response.body().string();
要参考示例,请参阅以下链接:http://www.vogella.com/tutorials/JavaLibrary-OkHttp/article.html