1

私はJetty HTTP clientの助けを借りてFirebase Cloud Messaging by Googleを使用しようとしています:StringContentProviderはHTTPリクエストでContent-Typeヘッダーを設定していますか?

public static final String FCM_URL = "https://fcm.googleapis.com/fcm/send"; 
public static final String FCM_KEY = "key=AAAA...."; 

private final HttpClient mHttpClient = new HttpClient(); 
private final CompleteListener mFcmListener = new CompleteListener() { 
    @Override 
    public void onComplete(Result result) { 
     if (result.isFailed()) { 
      // TODO delete FCM token in database for certain responses 
     } 
    } 
}; 

mHttpClient.start(); 
mHttpClient.POST(FCM_URL) 
    .header(HttpHeader.AUTHORIZATION, FCM_KEY) 
    .content(new StringContentProvider(notificationStr), "application/json") 
    .send(mFcmListener); 

私の質問は非常にシンプルですが、私はStringContentProvider、そのベースクラスを見て、自分自身をまだ答えを見つけることができませんでした -

私はFCMの要求のHTTPヘッダーを設定する必要がある場合:

Content-Type: application/json 

その後、私は行を追加する必要があります

.header(HttpHeader.CONTENT_TYPE, "application/json") 

このクラスはすでに私にとってそれをしますか?

答えて

2

ポイントのカップル:

  • あなたが明示的にコンテンツタイプヘッダーを設定しない場合は、[はい、それはselectedコンテンツプロバイダに基づいて自動設定されます。

  • デフォルトでは、StringContentProviderはContent-Typeをtext/plainに設定します。オーバーライドするには、別のコンストラクタを使用する必要があります。 -

    新しいStringContentProvider( "application/json"、content、StandardCharsets.UTF_8);

  • リクエスト#setContentメソッドは、Content-Typeヘッダーを指定された値に自動的に設定します。したがって、コードを変更する必要はありません。

+1

フォーマットが改善されました。この回答の改善は大歓迎です。 –

関連する問題