Android возвращает пустую строку HTTP

У меня проблема. У меня есть класс AsyncTaskActivity котором есть метод downloadUrl который общается с сервером php через HttpURLConnection . Сервер php, который связывается с MySql DB, должен возвращать, в зависимости от типа элемента, строковый текст или строку в формате json. HttpURLConnection возвращает пустую строку, когда тип элемента, возвращаемого сервером, является строковым текстом. Это класс AsyncTaskActivity .

 public class AsyncTaskActivity extends AsyncTask<String, Void, String> { private Context context; String serverParameters; public AsyncResponse delegate = null; String url = null; private ProgressDialog pd; public AsyncTask(Context c, String s, AsyncResponse<String> delegate) { this.serverParameters = s; this.context = c; this.delegate = delegate; } @Override protected String doInBackground(String... strings) { try { url = downloadUrl(strings[0]); } catch (IOException e) { e.printStackTrace(); } return url; } protected void onPreExecute() { super.onPreExecute(); pd = new ProgressDialog(context); pd.setTitle("Please Wait..."); pd.setMessage("Loading..."); pd.show(); } protected void onPostExecute(String result) { super.onPostExecute(result); System.out.println("RESULT = " + result); delegate.processFinish(result); pd.dismiss(); } private String downloadUrl(String targetURL) throws IOException { URL url; HttpURLConnection connection = null; try { // Create connection url = new URL(targetURL); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Accept", "application/json"); connection.setUseCaches(false); connection.setDoInput(true); connection.setDoOutput(true); // Send request OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream()); wr.write(serverParameters); wr.flush(); wr.close(); // Get Response InputStream is = connection.getInputStream(); String data = convertStreamToString(is); is.close(); return data; } catch (Exception e) { e.printStackTrace(); return null; } finally { if (connection != null) { connection.disconnect(); } } } private String convertStreamToString(InputStream inputStream) { Scanner s = new Scanner(inputStream).useDelimiter("\\A"); return s.hasNext() ? s.next() : ""; } 

Это класс AvailabilityActivity . Когда я отправляю запрос на сервер, он должен быть указан как элемент типа параметра, тип доступа (чтение, запись, изменение, удаление) и json для записи. В этом случае, когда я отправляю запрос на сервер (type element = "expert", access = "read", json to write = ""), я получаю пустую строку. Элемент типа «expert» должен возвращать строковый текст. В Riepilogo.setOnClickListener serverParameters инициализируется, sendRequest() выполняет AsyncTaskActivity() .

 public class AvailabilityActivity extends ActionBarActivity implements AsyncResponse<String> { private Spinner spinner; private Spinner spinner1; /* Parameters Expertise*/ private static final String TIPO_ELEMENTO = "expertise"; private static final String ACCESSO = "read"; private AsyncTaskActivity send_request; private String serverParameters; private JSONObject jsonObject; private ArrayList<String> list = new ArrayList<String>(); AvailabilityEntity availabilityEntity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_availability); spinner1 = (Spinner) findViewById(R.id.spinner1); spinner = (Spinner) findViewById(R.id.spinner2); Riepilogo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { date_ = date.getText().toString(); startTime_ = startTime.getText().toString(); endTime_ = endTime.getText().toString(); timeEditText_ = timeEditText.getText().toString(); availabilityEntity = new AvailabilityEntity(date_, startTime_, endTime_, itemSpinner, timeEditText_); showSummary(); } }); serverParameters = generateParameters(TIPO_ELEMENTO, ACCESSO, ""); sendRequest(); } private String generateParameters(String tipoElementoLogin, String accesso, String s) { String parameters = "accesso:" + accesso + ", elemento:" + tipoElementoLogin + ", jsonDaScrivere:" + s; return parameters; } private void sendRequest() { send_request = new AsyncTaskActivityString(this, serverParameters, this); send_request.execute(getApplicationContext().getResources().getString(R.string.serverQuery)); } @Override public void processFinish(String output) { System.out.println("Value: " + output); // Aggiunge lista expertise dal server in spinner list.add(output); ArrayAdapter<String> array_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list); array_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner1.setAdapter(array_adapter); } 

Похоже, вы забыли позвонить connection.connect (). Попробуйте этот фрагмент кода:

 private String downloadUrl(String targetURL) throws IOException { ... ... // Get Response connection.connect(); int http_code = connection.getResponseCode(); String data = null; if (http_code == HttpURLConnection.HTTP_OK) { data = this.convertStreamToString(connection.getInputStream()); }