我尝试在https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)的帮助下使用Firebase Cloud Messaging by Google:
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);
我的问题非常简单,但我自己找不到答案了Jetty HTTP client及其基类 -
如果我需要为FCM设置请求HTTP标头:
Content-Type: application/json
然后我必须添加这一行:
.header(HttpHeader.CONTENT_TYPE, "application/json")
或者那个班级已经为我做了吗?
答案 0 :(得分:3)
有几点:
是的,如果您未明确设置内容类型标头,则会根据selected内容提供商自动设置。
默认情况下,StringContentProvider将Content-Type设置为text / plain。要覆盖,您需要使用另一个构造函数 -
new StringContentProvider(“application / json”,content,StandardCharsets.UTF_8);
请求#setContent方法会自动将Content-Type标头设置为提供的值。因此,您无需对代码进行任何更改。