#android
Мне при нажатии на кнопку в MainActivity надо запросить данные Есть специальный адрес по которому они лежать в json представлении Мне кажется или в java все как то сложно?) Права для интернета я указал. Все, с кодом проблемы) URL url = new URL("http://hashcode.ru").openStream() Тут подчеркивает красным строчку с адресом.... (((
Ответы
Ответ 1
public static String doGet(String url) throws Exception { URL obj = new URL(url); HttpURLConnection connection = (HttpURLConnection) obj.openConnection(); //add reuqest header connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", "Mozilla/5.0" ); connection.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); connection.setRequestProperty("Content-Type", "application/json"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = bufferedReader.readLine()) != null) { response.append(inputLine); } bufferedReader.close(); // print result Log.d(TAG,"Response string: " + response.toString()); return response.toString(); } Использовать можно так: new AsyncTask() { @Override protected String doInBackground(Void... voids) { String s = ""; try { s = doGet(myURL); } catch (Exception e) { e.printStackTrace(); } return s; } @Override protected void onPostExecute(final String result) { runOnUiThread(new Runnable() { @Override public void run() { tvRez.setText(result); } }); } }.execute(); Ответ 2
Делал с помощью потока: public class JsonTask extends AsyncTask{ private final String URL = "google.com"; private ArrayList postParams = new ArrayList<>(); private JSONObject jsonObject = new JSONObject(); @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(String... params) { postParams.add(new BasicNameValuePair("ParamKey", "ParamValue")); jsonObject = JSONParser.makeHttpRequest(URL, "GET", postParams); return jsonObject.toString(); } } и Вот сам парсер для разбора JSON: public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; public static JSONObject makeHttpRequest(String url, String method, List params) { try { if (method == "POST") { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } else if (method == "GET") { DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { System.out.println("Internet Error.") } try { BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { System.out.println("Buffer Error : Error converting result " + e.toString()); } try { jObj = new JSONObject(json); } catch (JSONException e) { System.out.println("JSON Parser: + Error parsing data " + e.toString()); } return jObj; } }
Комментариев нет:
Отправить комментарий