2013-11-01 2 views
0

Я пытаюсь подключиться к url, используя URLConnection, в java с именем пользователя и паролем. Это следующий код, я использую:URLConnection в java, используя имя пользователя, пароль, токен

package com.nivi.org.client; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 

import com.sun.jersey.core.util.Base64; 

public class GetURLContent { 
    public static void main(String[] args) { 

     URL url; 

     try { 

      url = new URL("http://sampleurl.co.uk"); 

      URLConnection conn = url.openConnection(); 


      String username = "username"; 
      String password = "password"; 
      String Token = "zzzzzzzzzzzzzzzzzzzzz"; 


      System.setProperty("http.proxyHost", "proxyhostname"); 
      System.setProperty("http.proxyPort", "8080"); 


      String userpass = username + ":" + password; 
      String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes())); 
      conn.setRequestProperty ("Authorization", basicAuth); 
      conn.setRequestProperty ("Token", Token); 


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

      System.out.println("br............."+br.toString()); 

      br.close(); 

      System.out.println("Done"); 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 
} 

================================= ====== Я получаю следующее сообщение об ошибке

java.io.IOException: Server returned HTTP response code: 403 for URL: 
http://sampleurl.co.uk 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625) 
    at com.nivi.org.client.GetURLContent.main(GetURLContent.java:63) 

============================== =========

В первую очередь мой вопрос: Правильность ли эти строки в коде?

conn.setRequestProperty ("Authorization", basicAuth); 
    conn.setRequestProperty ("Token", Token); 
+1

Могу ли я узнать, какой из протокалов использовать HHTP или https, и вы передаете только имя пользователя, поэтому вы должны передать имя пользователя, включая passowrd, для целей предотвращения мы должны передать оба значения. – sravan

ответ

0

Являются ли эти следующие строки в коде правильно?

Это зависит от того, как фактический веб-сайт, к которому вы обращаетесь, реализует аутентификацию пользователя.

Что вы делаете, это комбинация базовой аутентификации HTTP (т. Е. Заголовок Authorization) и что-то, что связано с нестандартным заголовком, называемым Token. Этого может быть достаточно, если сайт поддерживает базовую аутентификацию.


Возможно, вы должны прочитать документацию программиста на веб-сайте о том, как работают их веб-API. Если для вас нет такой документации, используйте инструменты веб-разработки браузеров для определения механизма, который использует сайт при входе в систему через веб-браузер, и попытайтесь заставить своего клиента вести себя одинаково.


Следует отметить, что отправка основного ответа на авторизацию в HTTP-запросе небезопасна. Используйте HTTPS-запрос, если это опция.

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