我遇到从URL读取JSON的问题。
对于桌面应用程序,我一直使用“curl”来读取URL中的内容。
即。 curl -H 'Accept: application/json' 'http://example.com/abc.py/data'
我正在使用以下代码在Android App中执行相同操作,但它无效。
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.addHeader("Accept", "application/json");
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
任何人都可以帮忙吗?
谢谢,
答案 0 :(得分:0)
有很多原因可能无法正常工作,其中一个原因是它实际上是由getContent返回的inputStream,这里是我应用程序的工作代码片段
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
...
private static String getInputStreamAsString(Context ctxt, InputStream is)
{
byte[] sBuffer = new byte[512];
ByteArrayOutputStream content = new ByteArrayOutputStream();
// Read response into a buffered stream
int readBytes = 0;
try
{
while ((readBytes = is.read(sBuffer)) != -1)
{
content.write(sBuffer, 0, readBytes);
}
}
catch (IOException e)
{
Util.e(ctxt, TAG, Util.fmt(e));
}
return new String(content.toByteArray());
}
public static test() {
HttpClient client = DefaultHttpClient()
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);;
StatusLine status = response.getStatusLine();
String str = getInputStreamAsString(ctxt, response.getEntity().getContent());
JSONObject json = new JSONObject(str);
}
...
答案 1 :(得分:0)
谢谢大家的回复。
发生错误是因为我没有在清单中设置Internet权限,因此无法连接到URL。
现在有效:)