дооснащение 1.9 продолжает вызывать сбой и возвращает нулевое тело

Я пытаюсь связаться с моим php webservice (механизм приложений Google), но он продолжает отвечать с нулевым значением body, а также вызывает метод fail () дооснащения (обратного вызова).

Я получаю следующее сообщение об ошибке в fail () при его отладке:

retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

Сначала вот код, где я запускаю запрос к моему веб-сервису:

 WebServiceManager.getInstance().registerRequest(email, password, username, firstname, lastname, new Callback<RegisterResponse>() {
@Override
public void success(RegisterResponse registerResponse, Response response) {
Toast.makeText(context, registerResponse.getToken() + "", Toast.LENGTH_LONG).show();
}

@Override
public void failure(RetrofitError error) {
Toast.makeText(context,"error ", Toast.LENGTH_LONG).show();
}
});

А вот мой класс WebServiceManager для управления запросами и ответами:
http://pastebin.com/Q8bzqQ0M

И модель классов для запросов и ответов:
http://pastebin.com/aB98Yiua

Вот как выглядит мой запрос json:

{
data{
"email": "[email protected]",
"firstname": "regdrgersf",
"lastname": "regdrgersf",
"password": "hejhejhej",
"username": "regdrgersf"}
}

Я также считаю уместным включить часть, где я получаю запрос, на мой веб-сервис:

<?php
require '../functions/db.php';

$data = getJsonRequest();

$email      = $data['data']['email'];
$password   = $data['data']['password'];
$username   = $data['data']['username'];
$firstname  = $data['data']['firstname'];
$lastname   = $data['data']['lastname'];
$facebookID = $data['data']['facebookID'];

$dbClass = new DBClass();
$result = $dbClass->register($email, $password, $username, $firstname, $lastname, $facebookID);

$response = array();
if ($result == $dbClass->error_input || $result == $dbClass->error_email_exists || $result == $dbClass->error_unknown || $result == $dbClass->error_db_connection) {
$response['status'] = false;
$response['error'] = $result;

} else {
$response['status'] = true;
$response['token'] = $result;
}

sendJsonResponse($response);

?>

И функция «sendJsonResponse ($ response)» для отправки ответа:

function sendJsonResponse($response) {
header('HTTP/1.1 200 OK');
header('Content-type: application/json');

echo json_encode($response);
}

Я не могу понять, есть ли проблема где-то в моем коде java (android) и модернизации, или я делаю что-то неправильно на веб-сервере.

Любая помощь будет оценена.

0

Решение

Я нашел способ исправить это сам, поэтому я думаю, что я должен опубликовать свое решение здесь, чтобы оно могло помочь другим … хотя я не уверен, почему мое первое решение не сработало.
Удалив аннотацию @FormUrlEncoded и изменив @Field (‘data’) на @Body, это действительно сработало. Теперь интерфейс выглядит так.

private interface webServiceInterface {
@POST(WebServiceManager.REQUEST_REGISTER)
void register(@Body RegisterRequest registerRequest, Callback<RegisterResponse> response);
}

В любом случае, я действительно ценю всю помощь, которую я получил от людей здесь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]