改造POST方法不适用于Nginx服务器

时间:2018-06-25 09:18:31

标签: android nginx retrofit2 rx-java2

我正在尝试使用更新后的方法将json提交到服务器。

如果我的服务器使用的是apache服务器,则它可以工作,但是如果使用的是nginx服务器,则它不能工作..

我正在尝试使用虚拟api进行解释。 我在做什么?

URL:

    https://mysite_url/3.6.2/create_dummy_data

有效载荷:

    {"access_token":"476be4412cef4a3490c2fa2cef5b4cfa","distance":"2000","credit":"200","duration":"10","competitor_id":"180"}

我在这里处理这个问题:

    //@headers({"Content-Type: multipart/form-data"}) this is optional
    //@headers({"Content-Type: application/json"})    this is optional
    @post(URL)
    Observable<PayloadDummy> dummySubmitApi(@query("payload") String s);

服务器错误:

带有多部分标题:

  

[错误] 6419#6419:* 26在stderr中发送的FastCGI:“ PHP消息:PHP   警告:未知的多部分/表单数据POST数据中缺少边界   在第0行上”,同时从上游读取响应标头

没有任何标题:

  

response_status_code 500请求“ POST /3.6.2/create_dummy_data   HTTP / 1.1“ 180.151.5.333--[25 / Jun / 2018:11:19:17 +0000] 17730”-“   “ okhttp / 3.10.0”“-”“   {\ x22access_token \ x22:\ x22476be4412cef4a3490c2fa2cef5b4cfa \ x22,\ x22competitor_id \ x22:\ x22469 \ x22,\ x22credit \ x22:\ x22200 \ x22,\ x22distance \ x22:\ x221000 \ x22 \ x22 \ x22 \ x22 \ x22 ,\ x22type \ x22:\ x220 \ x22}“”-“   “-”“-”“-”   {\ x22access_token \ x22:\ x22476be4412cef4a3490c2fa2cef5b4cfa \ x22,\ x22competitor_id \ x22:\ x22469 \ x22,\ x22credit \ x22:\ x22200 \ x22,\ x22distance \ x22:\ x221000 \ x22 \ x22 \ x22 \ x22 \ x22 ,\ x22type \ x22:\ x220 \ x22}

我使用了边界,但是它不起作用..

如何解决我的问题..请建议我。

问题:https://github.com/square/retrofit/issues/2802

2 个答案:

答案 0 :(得分:0)

创建一个pojo类用于发送json数据。您可以根据robopojo pulgins来制作pojo类,或参考此网站http://www.jsonschema2pojo.org/

在日期之后定义用于api调用的方法。

    @POST("url")
Call<ResponseData> getData(@Body User user);

以及服务器响应pojo类

答案 1 :(得分:0)

您以错误的方式传递数据,请更改此Direction of changing的错误消息显示,您需要分多次传递数据,并且要传递JSON