如何在android中发送HttpRequest并获取Json响应?

moo*_*avi 11 android json httprequest wp-api

我想使用wp-api插件为我的wordpress网站构建一个Android应用程序.我如何在Json中发送HttpRequest(GET)和recive响应?

Asa*_*der 29

使用此函数从URL获取JSON.

public static JSONObject getJSONObjectFromURL(String urlString) throws IOException, JSONException {
    HttpURLConnection urlConnection = null;
    URL url = new URL(urlString);
    urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setRequestMethod("GET");
    urlConnection.setReadTimeout(10000 /* milliseconds */ );
    urlConnection.setConnectTimeout(15000 /* milliseconds */ );
    urlConnection.setDoOutput(true);
    urlConnection.connect();

    BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
    StringBuilder sb = new StringBuilder();

    String line;
    while ((line = br.readLine()) != null) {
        sb.append(line + "\n");
    }
    br.close();

    String jsonString = sb.toString();
    System.out.println("JSON: " + jsonString);

    return new JSONObject(jsonString);
}
Run Code Online (Sandbox Code Playgroud)

不要忘记在清单中添加Internet权限

<uses-permission android:name="android.permission.INTERNET" />

然后像这样使用它:

try{
      JSONObject jsonObject = getJSONObjectFromURL(urlString);
      //
      // Parse your json here
      //
} catch (IOException e) {
      e.printStackTrace();
} catch (JSONException e) {
      e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

  • 不错的解决方案,不需要导入apache http客户端! (2认同)

Ija*_*d N 13

尝试以下代码从URL获取json

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget= new HttpGet(URL);

HttpResponse response = httpclient.execute(httpget);

if(response.getStatusLine().getStatusCode()==200){
   String server_response = EntityUtils.toString(response.getEntity());
   Log.i("Server response", server_response );
} else {
   Log.i("Server response", "Failed to get server response" );
}
Run Code Online (Sandbox Code Playgroud)

  • 哪里可以找到HttpClient?我必须包括哪些套餐? (3认同)
  • @Tarion只需在`defaultConfig`上方的`android`块中的app level level build.gradle文件中添加`useLibrary'org.apache.http.legacy'. (2认同)