簡體   English   中英

通過翻新發布到Google Cloud Messaging

[英]POST to Google Cloud Messaging with Retrofit

我正在使用HttpURLConnectionPOST消息發送到GCM,例如:

try {
    URL url = new URL(GCM_SERVER_URL);

    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/json");
    conn.setRequestProperty("Authorization", "key=" + apiKey);
    conn.setDoOutput(true);

    ObjectMapper mapper = new ObjectMapper();
    mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);

    DataOutputStream dataOutputStream = new DataOutputStream(conn.getOutputStream());

    mapper.writeValue(dataOutputStream, content);

    dataOutputStream.flush();
    dataOutputStream.close();

    // Get the response
    int responseCode = conn.getResponseCode();
    System.out.println("\nSending 'POST' request to URL : " + url);
    System.out.println("Response Code : " + responseCode);

    BufferedReader in = new BufferedReader(
            new InputStreamReader(conn.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();

    System.out.println(response.toString());
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

現在我想使用Retrofit for POST消息到GCM
我試過了:

@Headers("Content-Type: application/json")
@FormUrlEncoded
@POST("/")
public GCMObject GCMAuthorization(@Header("Authorization") String apiKey,
                                  @Body String data
);

我在data中發送了json字符串,但始終因以下錯誤而失敗:

@Body parameters cannot be used with form or multi-part encoding.

我沒有找到任何解決方案,我該如何解決?

當您要發送表單參數時,使用@FormUrlEncoded 這些參數被編碼為主體,您可以擁有自己的參數。 看起來好像您不是在使用和形成參數,因此請刪除@FormUrlEncoded 另外,我建議使用GSON將@Body POJO轉換為JSON。 看來您正在使用改造1並嘗試發送原始String Retrofit將嘗試為您進行JSON編碼,這意味着您最終將發送的對象包裝在“ ...”中。 如果要發送原始字符串,請查看此答案 ,以了解翻新1的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM