Java 如何使用改装2发出POST请求?

Java 如何使用改装2发出POST请求?,java,android,post,retrofit,retrofit2,Java,Android,Post,Retrofit,Retrofit2,我只能从文档中运行hello world示例(GithubService) 问题是,当我运行代码时,在onFailure()的内部出现以下错误 使用JsonReader.setLenient(true)在第1行接受格式错误的JSON 第1列路径$ 我的API接受POST params值,因此不需要将它们编码为JSON,但它会以JSON返回响应 对于响应,我得到了使用工具生成的ApiResponse类 我的界面: public interface ApiService { @POST("/

我只能从文档中运行hello world示例(GithubService)

问题是,当我运行代码时,在
onFailure()的内部出现以下错误

使用JsonReader.setLenient(true)在第1行接受格式错误的JSON 第1列路径$

我的API接受POST params值,因此不需要将它们编码为JSON,但它会以JSON返回响应

对于响应,我得到了使用工具生成的ApiResponse类

我的界面:

public interface ApiService {
    @POST("/")
    Call<ApiResponse> request(@Body HashMap<String, String> parameters);
}
公共接口服务{
@职位(“/”)
调用请求(@Body HashMap参数);
}
以下是我如何使用该服务:

HashMap<String, String> parameters = new HashMap<>();
parameters.put("api_key", "xxxxxxxxx");
parameters.put("app_id", "xxxxxxxxxxx");

Call<ApiResponse> call = client.request(parameters);
call.enqueue(new Callback<ApiResponse>() {
    @Override
    public void onResponse(Response<ApiResponse> response) {
        Log.d(LOG_TAG, "message = " + response.message());
        if(response.isSuccess()){
            Log.d(LOG_TAG, "-----isSuccess----");
        }else{
            Log.d(LOG_TAG, "-----isFalse-----");
        }

    }
    @Override
    public void onFailure(Throwable t) {
        Log.d(LOG_TAG, "----onFailure------");
        Log.e(LOG_TAG, t.getMessage());
        Log.d(LOG_TAG, "----onFailure------");
    }
});
HashMap参数=新的HashMap();
参数put(“api_键”、“xxxxxxxxx”);
参数。put(“应用程序id”、“XXXXXXXXXX”);
Call Call=client.request(参数);
call.enqueue(新回调(){
@凌驾
公共响应(响应){
Log.d(Log_标记,“message=“+response.message());
if(response.issucess()){
Log.d(Log_标记“-----issucess----”;
}否则{
Log.d(Log_标记“-----isFalse-----”);
}
}
@凌驾
失效时的公共无效(可丢弃的t){
Log.d(Log_标记“-----onFailure------”;
Log.e(Log_标记,t.getMessage());
Log.d(Log_标记“-----onFailure------”;
}
});

您应该知道如何对post参数进行编码。下面的
@标题
注释也很重要。它用于定义HTTP标头中使用的内容类型

@Headers("Content-type: application/json")
@POST("user/savetext")
    public Call<Id> changeShortText(@Body MyObjectToSend text);

问题的另一个来源可能是来自rest后端的JSON似乎不正确。您应该使用验证器检查json语法,例如..

如果您不想使用json编码的参数,请使用以下选项:

@FormUrlEncoded
@POST("/")
Call<ApiResponse> request(@Field("api_key") String apiKey, @Field("app_id") String appId);
@FormUrlEncoded
@职位(“/”)
调用请求(@Field(“api_key”)字符串apiKey,@Field(“app_id”)字符串appId);

@Header不适用于方法
因此无法编译,我不想编码为json,只需发布原始值方向-@Headers(“内容类型:application/json”)如何在此处使用参数调用post方法?发布完整的堆栈跟踪,但问题可能是响应格式不正确。改型中有很多调试选项,请使用它们
@FormUrlEncoded
@POST("/")
Call<ApiResponse> request(@Field("api_key") String apiKey, @Field("app_id") String appId);