2015-08-25 56 views
0

這個問題已被問到,但我的問題依然存在。如何在codenameone中進行基本身份驗證ConnectionRequest

final String info = "{\"tweet\":\"example\"}"; 

    String url = "https://api.orchestrate.io/v0" + "/" + "roars/seinecle/events/?pretty=true"; 
    ConnectionRequest request = new ConnectionRequest() { 
     @Override 
     protected void buildRequestBody(OutputStream os) throws IOException { 
      os.write(info.getBytes("UTF-8")); 
     } 

    }; 

    request.setUrl(url); 
    request.setPost(true); 
    request.setHttpMethod("PUT"); 
    request.setContentType("application/json"); 
    request.addRequestHeader("Authorization", "Basic MzUzOThlOTQtZjUzMy00ZGZkLTgx=="); 

我收到401錯誤。什麼輔助控制檯說我應該作爲一個請求寫:

enter image description here

回答

0

這爲我們工作:

String encoded = Base64.encodeNoNewline((user + ":" + pass).getBytes()); 
auth.addRequestHeader("Authorization", "Basic " + encoded); 

它看起來像你正在做Twitter的連接,看看我們的老TwitterRESTService類及其源代碼在git倉庫中。它有點過時了。

還檢查了我們如何寫UTF-8可能解決這個問題:

if(shouldWriteUTFAsGetBytes()) { 
    os.write(val.toString().getBytes("UTF-8")); 
} else { 
    OutputStreamWriter w = new OutputStreamWriter(os, "UTF-8"); 
    w.write(val.toString()); 
} 

有Java實現之間的細微差別,可能只是一個工作,而不是其他。

您可能還需要在消息正文之前或之後換行。

我建議在模擬器工具中使用我們的網絡監視器並查看傳出的請求。

+0

想到我解決了問題,但pb仍然存在......我實際上不會做Twitter,那只是一個佔位符名稱。 – seinecle

+0

我添加了一些其他的想法。我認爲401可能是一個誤導性的錯誤信息。 –

相關問題