Java 如何在改造中传递原始json数据

Java 如何在改造中传递原始json数据,java,android,retrofit,Java,Android,Retrofit,我正在改造中实现以下web api。 为了调用api,我实现了三个类 api.java public interface Api { @POST("/login.jsp") void login(@Body LoginRequest loginRequest, Callback<String> callback); } public class LoginRequest { private String username; private Stri

我正在改造中实现以下web api。

为了调用api,我实现了三个类

api.java

public interface Api {
    @POST("/login.jsp")
    void login(@Body LoginRequest loginRequest, Callback<String> callback);
}
public class LoginRequest {
    private String username;
    private String password;

    public LoginRequest() {
    }

    public LoginRequest(String username, String password) {
        this.username = username;
        this.password = password;
    }
}
public class ServiceClient {
    private static Api api;
    private static String BASE_URL = "http://example.com/xxx";

    static {
        setupServiceClient();
    }

    private ServiceClient() {}

    public static Api get() {
        return api;
    }

    private static void setupServiceClient() {
        Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

        api = retrofit.create(Api.class);
    }
}
ServiceClient.java

public interface Api {
    @POST("/login.jsp")
    void login(@Body LoginRequest loginRequest, Callback<String> callback);
}
public class LoginRequest {
    private String username;
    private String password;

    public LoginRequest() {
    }

    public LoginRequest(String username, String password) {
        this.username = username;
        this.password = password;
    }
}
public class ServiceClient {
    private static Api api;
    private static String BASE_URL = "http://example.com/xxx";

    static {
        setupServiceClient();
    }

    private ServiceClient() {}

    public static Api get() {
        return api;
    }

    private static void setupServiceClient() {
        Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

        api = retrofit.create(Api.class);
    }
}
然后我尝试如下调用api

ServiceClient.get().login(new LoginRequest(user, password), new Callback<String>() {
            @Override
            public void onResponse(Response<String> response, Retrofit retrofit) {
                Log.i(TAG, "SUCESS");
            }

            @Override
            public void onFailure(Throwable t) {
                Log.i(TAG, "ERROR");
            }
        });
ServiceClient.get().login(新登录请求(用户、密码)、新回调(){
@凌驾
公共响应(响应、改装){
Log.i(标记“success”);
}
@凌驾
失效时的公共无效(可丢弃的t){
Log.i(标记“错误”);
}
});
但不幸的是,该应用程序在调用api后崩溃。我怀疑这个问题与原始json参数值有关。 有什么建议吗?
谢谢

欢迎来到Stackoverflow。您可以从您的logcat发布stacktrace吗?将
.setLogLevel(RestAdapter.LogLevel.FULL)
添加到
改装.Builder
,然后从logcat发布日志您是否能够解决问题?在使用改型实现登录时,我也遇到了问题。我能够通过检查日志来检测web api的输出值问题。在我的例子中,登录api只返回带有空字符串值的状态代码。因此,将空字符串值转换为GSON会使改装变得混乱。我已经向服务器发送了修改web api的请求。我来看看会怎么样。我将在这里发布一个结果。登录api已更改为返回NULL,状态代码为。其他API返回JSON值。但我通过登录api收到以下错误消息。“com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)接受第1行第12列路径$的格式错误的JSON”有任何建议吗?欢迎使用Stackoverflow。您可以从您的logcat发布stacktrace吗?将
.setLogLevel(RestAdapter.LogLevel.FULL)
添加到
改装.Builder
,然后从logcat发布日志您是否能够解决问题?在使用改型实现登录时,我也遇到了问题。我能够通过检查日志来检测web api的输出值问题。在我的例子中,登录api只返回带有空字符串值的状态代码。因此,将空字符串值转换为GSON会使改装变得混乱。我已经向服务器发送了修改web api的请求。我来看看会怎么样。我将在这里发布一个结果。登录api已更改为返回NULL,状态代码为。其他API返回JSON值。但我通过登录api收到以下错误消息。“com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)接受第1行第12列路径$处格式错误的JSON”有任何建议吗?