如何在codenameone ConnectionRequest中进行基本身份验证

时间:2015-08-25 14:40:24

标签: http authentication codenameone

这个问题已经被问到,但我的问题仍然存在。

    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

1 个答案:

答案 0 :(得分: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实现之间存在细微差别,这些差异可能仅适用于一个而不适用于另一个。

您可能还需要在邮件正文之前或之后添加换行符。

我建议在模拟器工具中使用我们的网络监视器并查看传出请求。