2016-05-31 94 views
2

我有一個很奇怪的問題。發佈請求未到達服務器。我有HttpInterceptorLoggerAndroid Retrofit post請求未到達服務器

,所以我看到日誌(見下文)。其他帖子請求正常工作,但他們沒有發送json:

此外,通過瀏覽器檢查此請求,它工作正常。不知道哪裏可能是一個問題。請幫助解決它。

我有要求:

@POST(LEAD_SET) 
Observable<ResponsePojo<LeadsPostPackage>> setFullLead(@Body RequestPojo<LeadsPostPackage> leadsRequestPojoRequestPojo) 

這是響應:

05-31 11:50:06.682 20489-20489/com.amocrm.prototype D/OkHttp: --> POST https://andmhxsq.amocrm.com/private/api/v2/json/leads/set http/1.1 
05-31 11:50:06.682 20489-20489/com.amocrm.prototype D/OkHttp: Content-Type: application/json; charset=UTF-8 
05-31 11:50:06.682 20489-20489/com.amocrm.prototype D/OkHttp: Content-Length: 164 
05-31 11:50:06.682 20489-20489/com.amocrm.prototype D/OkHttp: Cookie: BITRIX_SM_LOGIN=amodeveloper%40yandex.ru; expires=Wed, 05-May-2021 08:50:01 GMT; path=/; domain=.amocrm.com;BITRIX_SM_SALE_UID=0; expires=Fri, 26-May-2017 08:50:01 GMT; path=/; domain=.amocrm.com;session_id=h44nqh6np985fj5dhe9jqs1ensnh4ga0gdf6sbr10o76kv53nb81; path=/; domain=.amocrm.com;user_lang=en; expires=Mon, 31-May-2021 08:50:01 GMT; path=/; domain=.amocrm.com; 
05-31 11:50:06.682 20489-20489/com.amocrm.prototype D/OkHttp: {"request":{"leads":{"update":[{"id":"40604699","last_modified":"1464684606","name":"Lead with many custom field","pipeline_id":"171910","status_id":"10753387"}]}}} 
05-31 11:50:06.683 20489-20489/com.amocrm.prototype D/OkHttp: --> END POST (164-byte body) 

回答

0

請檢查您的服務器支持HTTP 2協議。如果沒有,那麼這可能是一個問題,因爲Retrofit2默認使用最新的可用協議。 Retrofit服務通常使用OkHttpClient進行初始化,默認支持的協議爲:HTTP 1.1,SPDY 3.1和HTTP2。其中最近期的是HTTP 2.

如果您要設置HTTP 1.1的支持,你應該明確地設置:

OkHttpClient okHttpClient = new OkHttpClient(); 
okHttpClient.setProtocols(Arrays.asList(Protocol.HTTP_1_1); 

記住,只能Protocol.HTTP_1_1補充。

+0

好的嘗試,但OPs日誌中的第一行與它相矛盾:' - > POST https://andmhxsq.amocrm.com/private/api/v2/json/leads/set http/1.1'。如果客戶端使用的是HTTP2 – grochmal

+0

,則客戶端不會發送該消息。沒有注意到。 – mlarinskiy