2015-08-08 5 views
1

Я пытаюсь получить данные xml от реселлера Apache, используя его rest api. Вот мой кодHttp Получить запрос не работает

val httpclient = new DefaultHttpClient() 
    val auth=new AuthScope(host,AuthScope.ANY_PORT) 
    val credentials=new UsernamePasswordCredentials(username, password) 
    httpclient.getCredentialsProvider() 
      .setCredentials(auth, credentials) 
    val httpget = new HttpGet("http://localhost:6080/service/public/api/repository/1") 
    httpget.setHeader("Accept", "application/xml") 
    val response = httpclient.execute(httpget) 
    val entity = response.getEntity 
    if (entity != null) { 
     val in = new BufferedReader(new InputStreamReader(entity.getContent())) 
     var line = in.readLine() 
     var response = new StringBuffer() 
     while (line != null) { 
     response.append(line) 
     line = in.readLine() 
     } 
     in.close() 
     println(response.toString()) 
    } 

Если я ударил этот URL-адрес из браузера, он показывает результат в порядке. Но в случае кода он возвращает html.

Любая помощь?

+1

Что скажет этот html? что-нибудь об аутентификации? – Ashalynd

+0

это говорит, что пользователь не существует – user3313379

+0

это прекрасно работает с использованием команды curl в этом формате curl http://my_url.net?param1=12¶m2=777 --header «Авторизация: Basic XXX», где xxx кодируется имя пользователя: пароль – user3313379

ответ

1

Попробуйте этот код

val httpclient = new DefaultHttpClient() 
    val httpget = new HttpGet("url") 
    httpget.addHeader(BasicScheme.authenticate(
     new UsernamePasswordCredentials("user", "pass"), 
     "UTF-8", false)) 
    httpget.setHeader("Accept", "application/json") 
    val response = httpclient.execute(httpget) 
    EntityUtils.toString(response.getEntity()) 

настройки аутентификации в запросе.

Thanks

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