2015-08-25 4 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 может быть обманчивым сообщением об ошибке здесь. –

Смежные вопросы