Я пытаюсь реализовать простую запись JSON для URL-адреса, который принимает JSON в теле с базовой аутентификацией на ANDROID.
Я пробовал с HttpUrlConnection
, но я получил "unauthorized", и мои данные отправляются на сервер.
Другим способом, который я пытался использовать, является HttpClient
, но теперь у меня другая проблема. Аутентификация работает идеально, но данные не отправляются на сервер...
Чтобы быть уверенным, я настраиваю небольшой тест в простом Java-проекте (не в Android-среде).
Это код, который я использую для POST на сервере:
DefaultHttpClient httpClient = new DefaultHttpClient();
ResponseHandler<String> resonseHandler = new BasicResponseHandler();
HttpPost postMethod = new HttpPost("http://localhost/api/v1/purchase/");
postMethod.setEntity(new StringEntity("{\"amount_adult\" : 1, \"object_id\" : 13}"));
postMethod.setHeader( "Content-Type", "application/json");
String authorizationString = "Basic " + Base64.encodeToString(("travelbuddy" + ":" + "travelbuddy").getBytes(), Base64.DEFAULT); //this line is diffe
postMethod.setHeader("Authorization", authorizationString);
String response = httpClient.execute(postMethod,resonseHandler);
System.out.println("response :" + response);
Код в проекте Java отлично работает.
Когда я пытаюсь использовать тот же самый код в Android, я получаю internal server error
с сервера, а это значит, что данные JSON не были получены.
Я действительно не понимаю, почему это работает в JAVA, но не в Android.
Эффект, который я хотел бы достичь, - это следующая команда:
curl --dump-header - -H "Content-Type: application/json" -X
POST --data '{"amount_adult":1, "object_id":13}'
--user travelbuddy:travelbuddy http://localhost/api/v1/purchase/