今天開始準(zhǔn)備調(diào)用極光推送的REST API發(fā)現(xiàn)報了很多錯。postman和idea都試過了
報錯1: post請求接口,返回{"code":9010,"content":"missing auth"}
出這個錯,請仔細(xì)查看官方文檔https://docs./jverification/server/rest_api/rest_api_summary/
鑒權(quán)方式
極光 REST API采用 HTTP 基本認(rèn)證的驗證方式?;咀龇椋琀TTP Header 中加 Authorization:
Authorization: Basic ${base64_auth_string}
Header 名稱是 "Authorization", 值是 base64轉(zhuǎn)換過的 "appKey:masterSecret"(中間有個冒號)。這兩者可以在極光開發(fā)者服務(wù)的Web控制臺[應(yīng)用設(shè)置]-[應(yīng)用信息]中查看。
報錯2:
{
}
出現(xiàn)這個錯誤,十有八九是你通過postMan請求,把Authorization放到header里面了。。。具體的做法如圖

而不是直接在headers里面加個Content-Type:application/json
Authorization Basic MDQzNDdkNDU5Y2QwODZhOTFjNWRlNjU1OjY5YThmODM4ZGV-----------------------
官方給出的解釋是:文檔里面提供的方式是restapi的方式,postmen是封裝好了的

post此時應(yīng)該可以請求了。
那么java代碼怎么寫呢?
* @Description 極光推送專用post * @Author PrinceCharmingDong public static String doPostForJpush (String url, String JSONBody,String appKey,String masterKey) { CloseableHttpResponse response = null; CloseableHttpClient httpClient = null; String responseContent = ""; httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); httpPost.addHeader("Content-Type", "application/json"); httpPost.addHeader("Authorization", "Basic " + Base64.getUrlEncoder() .encodeToString((appKey+ ":" + masterKey).getBytes())); httpPost.setEntity(new StringEntity(JSONBody)); response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); responseContent = EntityUtils.toString(entity, "UTF-8"); System.out.println(responseContent); } catch (ClientProtocolException e) { } catch (IOException e) { close(response, httpClient); private static void close(Closeable... closeables) { if (closeables != null && closeables.length > 0) { for (Closeable closeable : closeables) { } catch (IOException e) {
JSONBody是
{
"loginToken":"v3NMGQPG4x7XkKDEazzhJHoY-JdZfilhodyW5bV2U8C8pUxoCRnRoi3lkUQKjUJKD31pxPJRcO2PEdGEs04jRRbC3kHdDl5tLkACD-_I_NtcMOsEXtl3e7xnz8KpcxracnX_iXI6CPIJ5wBY9WfYaPtp30zdEy7ffcOk2F5NyWFKeup1y1k4s8aWsfGulFffE8Mzd7uQMmjCaYBm9x-------------"
}
這樣子的。
至于請求返回的數(shù)據(jù)怎么處理,你應(yīng)該會將 json 字符串轉(zhuǎn)為 java bean,然后獲取里面的內(nèi)容。此處不過多贅述
報錯3:
{
"id": 287637091930615808,
"code": 9003,
"content": "token expired or not exist",
"exID": null,
"phone": null
}
這個很明顯了,loginToken是一次性的,用了就沒了,叫客戶端再給個loginToken給你。
|