Intereting Posts

Android и PHP Создание API

Я пытаюсь настроить PHP API для моего приложения Android для взаимодействия, моя проблема заключается в том, что пост-данные никогда, кажется, не публикуются, и я никогда не могу получить тело ответа (HTML / TXT) из указанного URL-адреса.

Мой код

Thread thread = new Thread(new Runnable(){ @Override public void run() { try { HttpClient client = new DefaultHttpClient(); HttpPost clientpost = new HttpPost("http://192.168.1.129/updateMain.php"); try { List params = new ArrayList(2); params.add(new BasicNameValuePair("_id", "1")); params.add(new BasicNameValuePair("job_name", "Test")); clientpost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse response = client.execute(clientpost); String responseBody = EntityUtils.toString(response.getEntity()); } catch(Exception e) { Log.e("Error", e.toString()); } } catch (Exception e) { e.printStackTrace(); } } }); thread.start(); 

Если я смогу опубликовать данные, тогда я смогу отправить JSON на сервер и получить JSON с сервера, тем самым преодолев самое большое препятствие, которое у меня есть на данный момент.

Любая помощь очень ценится.

 public String getResponse(String url, List nameValuePairs) { url = url.replaceAll(" ", "%20"); String result = "ERROR"; Log.d("Pair", nameValuePairs.toString()); HttpClient httpclient = new DefaultHttpClient(); HttpParams http_params = httpclient.getParams(); http_params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); HttpConnectionParams.setConnectionTimeout(http_params, TIMEOUT); HttpConnectionParams.setSoTimeout(http_params, TIMEOUT); HttpResponse response = null; try { HttpPost httppost = new HttpPost(url); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); response = httpclient.execute(httppost); } catch (ClientProtocolException e) { e.printStackTrace(); result = "ERROR"; } catch (IOException e) { e.printStackTrace(); result = "ERROR"; } try { // Get hold of the response entity HttpEntity entity = null; if (response != null) { entity = response.getEntity(); } if (entity != null) { InputStream inputStream = entity.getContent(); result = convertStreamToString(inputStream); } } catch (IOException e) { result = "ERROR"; } httpclient.getConnectionManager().shutdown(); return result; } 

Используйте этот метод с помощью AsyncTask или фонового streamа

Этот работает для меня. Пожалуйста, позаботьтесь об ошибках обработки ошибок. Переменная Key121 – это URL-адрес вашего php-файла.

  class callServiceTask extends AsyncTask { @Override protected Void doInBackground(Void... params) { loginCheck(); return null; } } public void loginCheck() { InputStream is = null; ArrayList nameValuePairs = new ArrayList(); nameValuePairs.add(new BasicNameValuePair("aa","11")); nameValuePairs.add(new BasicNameValuePair("bb","22")); try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(KEY_121); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e) { Log.e("log_tag", "Error:"+e.toString()); } //convert response to string 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(); result=sb.toString(); Log.e("log_tag", "----------------"+result); }catch(Exception e){ Log.e("log_tag", "Error converting result "+e.toString()); } } 

Для анализа ответа необходимо использовать stream и буферизованный считыватель. Проверьте и сообщите нам об этом.