gpt4 book ai didi

android - 通过 Java 连接 GCM 时获取 JSON 异常

转载 作者:太空狗 更新时间:2023-10-29 12:45:01 25 4
gpt4 key购买 nike

我正在尝试通过 JAVA 代码连接到 GCM。

对于 application/x-www-form-urlencoded;charset=UTF-8 它工作正常,但是当我使用 Content-Type: application/json我得到 JSON_PARSING_ERROR: Unexpected character (r) at position 0

我的代码是:

     List<NameValuePair> formparams = new ArrayList<NameValuePair>();

formparams.add(new BasicNameValuePair("registration_id",
GCM_ID));
formparams.add(new BasicNameValuePair("data.message",
"this is data mesg"));
// UrlEncodedFormEntity entity = new
UrlEncodedFormEntity(formparams,
// "UTF-8");


HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(REQUEST_URL);

// ADDING DATA IN TO HEADER OF URL

httpPost.setHeader("Authorization",
"key=AIzaSyBmy5WfZMuO-BGMaWEtVhI1f-2gqyN-1h0");
/*httpPost.setHeader("Content-Type",
"application/x-www-form-urlencoded;charset=UTF-
8");*/
httpPost.setHeader("Content-Type",
" application/json"); // not
working


try {
httpPost.setEntity(new
UrlEncodedFormEntity(formparams, "utf-8"));

// RETRIEVING RESPONSE FROM URL
System.out.println("1");
HttpResponse response= httpclient.execute(httpPost);
System.out.println("2");
str =
inputStreamToString(response.getEntity().getContent()).toString();
System.out.println("3");
System.out.println(str+" "+response);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

解析响应的代码是:

private StringBuilder inputStreamToString(InputStream is) {
String line = "";
StringBuilder total = new StringBuilder();
// Wrap a BufferedReader around the InputStream
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
// Read response until the end
try {
while ((line = rd.readLine()) != null) {
total.append(line);
}
} catch (IOException e) {

Log.e("inputStreamToString", "during convert");
e.printStackTrace();
}
// Return full string
return total;
}

最佳答案

当然不行。您正在发送 application/x-www-form-urlencoded 内容,同时将内容类型指定为 application/jsonformparams 不是 JSON 字符串。

JSON 字符串应该如下所示:

{
"registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."],
"data" : {
"message" : "this is data mesg"
},
}

尝试使用 StringEntity 而不是 UrlEncodedFormEntity:

假设 jsonString 包含一个正确格式的字符串:

httpPost.setEntity(new StringEntity(jsonString, ContentType.APPLICATION_JSON));

关于android - 通过 Java 连接 GCM 时获取 JSON 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com