开发者

Basic authentication to access assembla rest apis from android

I want to use assembla apis from android environment for my project. I am trying to do basic authentication as follow :

String authentication = "username:password";
String encoding = Base64.encodeToString(authentication.getBytes(), 0);    

     URL url = new URL("https://www.assembla.com/");

        conn = (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("GET");

        conn.setRequestProperty("Authorization", "Basic " + encoding);
        conn.setDoOutput(true);

        conn.connect();
        System.out.println(conn.getResponseCode());

        System.out.println(conn.getResponseMessage());

I am getting 400 and Bad Request in output. is there something w开发者_开发知识库rong with URL that i am using or some other thing is going wrong?


It looks like the question was answered here. You need to use Base64.NO_WRAP flag when encoding username-password pair:

String encoding = Base64.encodeToString(authentication.getBytes(), Base64.NO_WRAP);

By default the Android Base64 util adds a newline character to the end of the encoded string. This invalidates the HTTP headers and causes the "Bad request".

The Base64.NO_WRAP flag tells the util to create the encoded string without the newline character thus keeping the HTTP headers intact.


REST API with HTTP Authentication Output:- I got the result

String authentication = "username:password";

String encoding = Base64.encodeToString(authentication.getBytes(), Base64.NO_WRAP);


HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");

conn.setDoOutput(true);

 conn.setRequestProperty ("Authorization", "Basic " + encoding);

  conn.connect();

 OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 

 wr.write( data ); 

 wr.flush(); 

  reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

   StringBuilder sb = new StringBuilder();

   String line = null;

 while((line = reader.readLine()) != null)
                        {

   // Append server response in string

   sb.append(line + "\n");


  }

 Content = sb.toString();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜