Отправка объекта JSON на HTTP-сервер в Android
Я отправляю объект JSON на HTTP-сервер, используя следующий код.
Главное, чтобы я тоже отправлял логические значения.
public void getServerData() throws JSONException, ClientProtocolException, IOException {
ArrayList<String> stringData = new ArrayList<String>();
DefaultHttpClient httpClient = new DefaultHttpClient();
ResponseHandler <String> resonseHandler = new BasicResponseHandler();
HttpPost postMethod = new HttpPost("http://consulting.for-the.biz/TicketMasterDev/TicketService.svc/SaveCustomer");
JSONObject json = new JSONObject();
json.put("AlertEmail",true);
json.put("APIKey","abc123456789");
json.put("Id",0);
json.put("Phone",number.getText().toString());
json.put("Name",name.getText().toString());
json.put("Email",email.getText().toString());
json.put("AlertPhone",false);
postMethod.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF8")));
String response = httpClient.execute(postMethod,resonseHandler);
Log.e("response :", response);
}
но это показывает исключение в строке
String response = httpClient.execute(postMethod,resonseHandler);
как
org.apache.http.client.HttpResponseException: Bad Request
Может кто-нибудь мне помочь.
2 ответа
Плохой запрос - это сервер, который говорит, что ему не нравится что-то в вашем POST.
Единственная очевидная проблема, которую я вижу, это то, что вы не сообщаете серверу, что отправляете ему JSON, поэтому вам может потребоваться установить заголовок Content-Type, чтобы указать, что тело application/json
:
postMethod.setHeader( "Content-Type", "application/json" );
Если это не сработает, вам может понадобиться просмотреть журналы сервера, чтобы понять, почему ему не нравится ваш POST.
Если у вас нет прямого доступа к журналам сервера, вам необходимо связаться с владельцем сервера, чтобы попытаться отладить что-либо. Возможно, формат вашего JSON немного неправильный, отсутствует обязательное поле или что-то еще.
Если вы не можете получить доступ к владельцу сервера, вы можете попробовать использовать перехватчик пакетов, такой как WireShark, для захвата пакетов как из вашего приложения, так и из успешного POST, и сравните два из них, чтобы попытаться выработать их. Какая разница. Это может быть немного похоже на поиск иголки в стоге сена, особенно для больших тел.
Если вы не можете получить пример успешного POST, то вы довольно хорошо набиты, поскольку у вас нет точки отсчета.
Это может быть нетехническим, но String response = httpClient.execute(postMethod,- >nexseHandler); Здесь есть орфографическая ошибка в имени переменной, используйте responseHandler(определено выше)