Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用多个查询参数改装POST_Android_Api_Retrofit - Fatal编程技术网

Android 使用多个查询参数改装POST

Android 使用多个查询参数改装POST,android,api,retrofit,Android,Api,Retrofit,我想做一个岗位指挥 这是我的终点: 我的问题是如何在改造中构建端点 我是这样做的: @POST("WSCoreAPI/send/receive/tester") Call<LoginResponse> tester( @QueryMap Map<String, String> data); @POST(“WSCoreAPI/send/receive/tester”) 呼叫测试仪( @查询地图数据); 但它不起作用 除此之外: @POST("WSCore

我想做一个岗位指挥

这是我的终点:

我的问题是如何在改造中构建端点

我是这样做的:

@POST("WSCoreAPI/send/receive/tester")
Call<LoginResponse> tester(
        @QueryMap Map<String, String> data);
@POST(“WSCoreAPI/send/receive/tester”)
呼叫测试仪(
@查询地图数据);
但它不起作用

除此之外:

@POST("WSCoreAPI/send/receive/tester")
Call<LoginResponse> tester(
        @Query("method") String method,
        @Query("data") String data);
@POST(“WSCoreAPI/send/receive/tester”)
呼叫测试仪(
@查询(“方法”)字符串方法,
@查询(“数据”)字符串数据);

对url编码字段使用@Field和@FormUrlEncoded

@FormUrlEncoded
@POST("WSCoreAPI/send/receive/tester")
Call<LoginResponse> tester(@Field("method") String method,
                           @Field("data") String data);
@FormUrlEncoded
@POST(“WSCoreAPI/send/receive/tester”)
调用tester(@Field(“method”)字符串方法,
@字段(“数据”)字符串数据);
试试这个

@FormUrlEncoded
@POST("WSCoreAPI/send/receive/tester")
Call<LoginResponse> tester(@FieldMap Map<String, String> parameters);
@FormUrlEncoded
@POST(“WSCoreAPI/send/receive/tester”)
调用测试仪(@FieldMap-Map参数);

好的,我让它工作了

我使用了上述两种解决方案中的任何一种

我所做的是删除了“数据”查询参数的url编码,并使用了以下内容:

@FormUrlEncoded
@POST("WSCoreAPI/send/receive/tester")
Call<LoginResponse> tester(@Field("method") String method,
                           @Field("data") String data);
@FormUrlEncoded
@POST(“WSCoreAPI/send/receive/tester”)
调用tester(@Field(“method”)字符串方法,
@字段(“数据”)字符串数据);

删除url编码可以解决这个问题,因为改型会自动对带有@Field注释的字段进行编码,但仍然没有成功。我仍然从我的朋友那里得到同样的错误api@fvthree你和邮递员或其他客户也试过吗?您的示例显示
&data=(urlencodeddata)
,并且您使用的是POST方法,但是,您传递的数据是查询的一部分。当您使用
@Field
@FieldMap
时,改型会将其添加到帖子正文中,而不是查询中。你的服务器应该接受邮件正文。我试过用邮递员。服务器不应接受帖子正文。发出请求时,url中应包含“方法”和“数据”。我需要查询您是否有任何错误?错误来自我的api。我不知道如何记录发送到api的实际url请求。因此,我猜在构建我的改造的端点时似乎有问题。你可以把android logcat放在这里更清楚地理解它吗?你可以使用@fvthree记录请求和响应。你应该在改造中使用onSuccess和onFailure方法实现回调接口。在onFailure的情况下,它将抛出一个异常,指出关于rest调用的错误。请尝试在android日志中记录该错误。登录android monitor并添加图像的监视器。这将帮助您调试该问题。这将帮助我们理解电话的问题。