Bạn sẽ nhận được lỗi biên dịch.
Đây là phiên bản chính xác:
HttpResponse response = null;
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI("https://www.googleapis.com/shopping/search/v1/public/products/?key={my_key}&country=&q=t-shirts&alt=json&rankByrelevancy="));
response = client.execute(request);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return response;
}
Vì vậy bây giờ nếu bạn có một lỗi phản ứng của bạn sẽ được trả lại như null.
Khi bạn có phản hồi và đã kiểm tra nó cho giá trị rỗng, bạn sẽ muốn lấy nội dung (tức là JSON của bạn).
http://developer.android.com/reference/org/apache/http/HttpResponse.html http://developer.android.com/reference/org/apache/http/HttpEntity.html http://developer.android.com/reference/java/io/InputStream.html
response.getEntity().getContent();
này mang đến cho bạn một InputStream để làm việc với. Nếu bạn muốn chuyển đổi này thành một chuỗi bạn muốn làm dưới đây hoặc tương đương:
http://www.mkyong.com/java/how-to-convert-inputstream-to-string-in-java/
public static String convertStreamToString(InputStream inputStream) throws IOException {
if (inputStream != null) {
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"),1024);
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
inputStream.close();
}
return writer.toString();
} else {
return "";
}
}
Khi bạn có chuỗi này bạn cần phải tạo ra một JSONObject từ nó:
http://developer.android.com/reference/org/json/JSONObject.html
JSONObject json = new JSONObject(inputStreamAsString);
Xong!
Thats không mã đầy đủ của bạn như trong kịch bản trên biến 'response' không nằm trong phạm vi của lệnh return. tức là bạn khai báo nó trong khối thử để không hoạt động. Có chuyện gì vậy? – Blundell
Tôi đã chỉnh sửa bài đăng của mình để bao gồm khung thử, nhưng đó là nó. Tôi có nên loại bỏ các dấu ngoặc cố gắng và bắt và chỉ sử dụng 'ném ngoại lệ ...' để tôi có thể truy cập biến trả lời không? –
Điều gì không hiệu quả? Có ngoại lệ nào không, Logcat? Khi sự cố đến từ httpClient, điều đầu tiên tôi khuyên bạn nên luôn kiểm tra mã trạng thái phản hồi tức là httpResponse.getStatusLine(). GetStatusCode(); – yorkw