Android – отправка запроса HTTPS

Я хотел бы отправить HTTPS Get Request в google shopping api, но для меня ничего не работает, например, вот что я сейчас пытаюсь сделать:

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=")); HttpResponse 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; } 

Если у кого-то есть предложения по тому, как улучшить это или заменить его, пожалуйста, дайте мне знать, спасибо заранее.

Вы должны получить ошибку компиляции.

Это правильная версия:

 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; } 

Поэтому теперь, если у вас есть ошибка, ваш ответ будет возвращен как null.

После того, как вы ответите и отметьте нулевое значение, вы захотите получить контент (т. Е. Ваш JSON).

http://developer.android.com/reference/org/apache/http/HttpResponse.html http://developer.android.com/reference/org/apache/http/HttpEntity.html http://developer.android. ком / ссылки / Java / IO / InputStream.html

 response.getEntity().getContent(); 

Это дает вам InputStream для работы. Если вы хотите преобразовать это в строку, которую вы делаете ниже или эквивалентно:

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 ""; } } 

Когда у вас есть эта строка, вам нужно создать JSONObject:

http://developer.android.com/reference/org/json/JSONObject.html

 JSONObject json = new JSONObject(inputStreamAsString); 

Готово!

Вы добавили это в свой манифест

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

Вы можете попробовать это, возможно, используя класс URLConnection

 String error = ""; // string field private String getDataFromUrl(String demoIdUrl) { String result = null; int resCode; InputStream in; try { URL url = new URL(demoIdUrl); URLConnection urlConn = url.openConnection(); HttpsURLConnection httpsConn = (HttpsURLConnection) urlConn; httpsConn.setAllowUserInteraction(false); httpsConn.setInstanceFollowRedirects(true); httpsConn.setRequestMethod("GET"); httpsConn.connect(); resCode = httpsConn.getResponseCode(); if (resCode == HttpURLConnection.HTTP_OK) { in = httpsConn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader( in, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { sb.append(line).append("\n"); } in.close(); result = sb.toString(); } else { error += resCode; } } catch (IOException e) { e.printStackTrace(); } return result; } 

Трудно сказать, если вы не сообщите нам, что такое ошибка.

Но если вы используете это в потоке пользовательского интерфейса, и веб-сервер занимает больше нескольких секунд, чтобы ответить, вы получите предупреждение о неответствии приложения из системы. Убедитесь, что вы осуществляете сетевые передачи в отдельном потоке.

Intereting Posts
Android Wear отправляет данные на телефон Android, но телефон, похоже, никогда не получит его Векторная графика, используемая для маркера карты Google Получение истории WebView из WebBackForwardList Добавляя любые новые зависимости в файле android build.gradle. Он всегда показывает ошибку Как наложить наложение Открыть панель действий Шерлок SetClipChildren и аппаратные слои Разрешения Marshmallow, не работающие для TargetVersion ниже 23 Рекомендации по синхронизации базы данных SQL с удаленным сервером REST на Android Тест-объявления AdMob отображаются только на английских устройствах Firebase Analytics загружается успешно, но не отображается на консоли Firebase даже через 2 дня Как контролировать объем в Android? Как сохранить файл Text to Speech в формате .wav / .mp3 на арабском языке во внешнем хранилище? Разница между drawable и drawable-mdpi OnCreate flow продолжается после завершения () Является ли Google Maps Android API v2 бесплатным?