我正在研究我们公司开发的应用程序.它使用Apache HttpClient库.在源代码中,它使用HttpClient类来创建连接到服务器的实例.
我想了解Apache HttpClient,我已经通过这组示例了解.所有示例都使用CloseableHttpClient而不是HttpClient.所以我认为CloseableHttpClient是一个扩展版本HttpClient.如果是这种情况,我有两个问题:
我正在尝试使用OkHttp获取一些json数据,并且无法弄清楚为什么当我尝试记录response.body().toString()我得到的是Results:? com.squareup.okhttp.Call$RealResponseBody@41c16aa8
try {
URL url = new URL(BaseUrl);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.header(/****/)
.build();
Call call = client.newCall(request);
Response response = call.execute();
**//for some reason this successfully prints out the response**
System.out.println("YEAH: " + response.body().string());
if(!response.isSuccessful()) {
Log.i("Response code", " " + response.code());
}
Log.i("Response code", response.code() + " ");
String results = response.body().toString();
Log.i("OkHTTP Results: ", results);
Run Code Online (Sandbox Code Playgroud)

我不知道我在这里做错了什么.我如何获得响应字符串?
我试图让Apache HttpClient触发HTTP请求,然后显示HTTP响应代码(200,404,500等)以及HTTP响应正文(文本字符串).重要的是要注意我正在使用,v4.2.2因为大多数HttpClient示例来自v.3.x.x,并且API从版本3变为版本4.
不幸的是,我只能让HttpClient返回状态代码或响应体(但不是两者).
这就是我所拥有的:
// Getting the status code.
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://whatever.blah.com");
HttpResponse resp = client.execute(httpGet);
int statusCode = resp.getStatusLine().getStatusCode();
// Getting the response body.
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://whatever.blah.com");
ResponseHandler<String> handler = new BasicResponseHandler();
String body = client.execute(httpGet, handler);
Run Code Online (Sandbox Code Playgroud)
所以我问:使用该v4.2.2库,如何从同一个client.execute(...)调用中获取状态代码和响应正文?提前致谢!
在我的应用程序中,我以JSON的形式从服务器获取数据.数据大约为1.5 MB.该应用程序可以工作,但有时它会在从服务器获取OutOfMemoryError的数据时崩溃.
这是我的方法:
private String sendPostRequest(String url, List<NameValuePair> params)
throws Exception {
String ret = null;
BufferedReader bufferedReader = null;
HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params);
request.setEntity(entity);
HttpResponse response = httpClient.execute(request);
bufferedReader = new BufferedReader(new InputStreamReader(response
.getEntity().getContent()));
StringBuilder stringBuilder = new StringBuilder("");
StringBuilder stringBuilder2;
String line = "";
//String LineSeparator = System.getProperty("line.separator");
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
ret = stringBuilder.toString();
stringBuilder = null;
} …Run Code Online (Sandbox Code Playgroud) 我想在 Java 中进行简单的 POST 调用,
我收到 200 响应代码,但是响应消息错误,我被告知在使用表单数据
时有不同的方式进行 Post 调用。以下是我当前用于进行 post 调用的 Java 代码 -
private String makePostCall(){
try {
String url = "http://someIp/trusted";
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
// add header
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("username", "app_user"));
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + post.getEntity());
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(new …Run Code Online (Sandbox Code Playgroud)