2010-06-10 2 views
6

После того, как у меня возникло множество проблем с предварительной аутентификацией, я получил его, наконец, работу. Теперь следующая проблема. Я хочу получить файл с ним, но я не знаю, как это сделать. Я думал, что данные файла могут быть в ответе переменной, но это не так. Любые идеи, как это может работать? Я пытаюсь это так дней без успеха :(-.. В основном я пытаюсь загрузить файл JPEG, который находится на сервере защищенной Prem AUTHЗагрузите файл с DefaultHTTPClient и упреждающей аутентификацией

 // BASIC AUTH 
     /* 
     * ==================================================================== 
     * 
     * Licensed to the Apache Software Foundation (ASF) under one or more 
     * contributor license agreements. See the NOTICE file distributed with 
     * this work for additional information regarding copyright ownership. 
     * The ASF licenses this file to You under the Apache License, Version 2.0 
     * (the "License"); you may not use this file except in compliance with 
     * the License. You may obtain a copy of the License at 
     * 
     *  http://www.apache.org/licenses/LICENSE-2.0 
     * 
     * Unless required by applicable law or agreed to in writing, software 
     * distributed under the License is distributed on an "AS IS" BASIS, 
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     * See the License for the specific language governing permissions and 
     * limitations under the License. 
     * ==================================================================== 
     * 
     * This software consists of voluntary contributions made by many 
     * individuals on behalf of the Apache Software Foundation. For more 
     * information on the Apache Software Foundation, please see 
     * <http://www.apache.org/>. 
     */ 
     //http://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.0.x/httpclient/src/examples/org/apache/http/examples/client/ClientPreemptiveBasicAuthentication.java 
     httpclient = new DefaultHttpClient(); 

     httpclient.getCredentialsProvider().setCredentials(
       new AuthScope(host, port), 
       new UsernamePasswordCredentials(username, password)); 

     // Generate BASIC scheme object and stick it to the local 
     // execution context 
     BasicHttpContext localcontext = new BasicHttpContext(); 

     BasicScheme basicAuth = new BasicScheme(); 
     localcontext.setAttribute("preemptive-auth", basicAuth); 

     //first request interceptor 
     httpclient.addRequestInterceptor(new PreemptiveAuth(), 0); 

     HttpHost targetHost = new HttpHost(host, port, "http"); 

     //HttpGet httpget = new HttpGet("/"); 

     HttpGet httpget = new HttpGet(http.url); 

     System.out.println("executing request" + httpget.getRequestLine()); 
     /// !!! 
     HttpResponse response = httpclient.execute(targetHost, httpget, localcontext); 
     HttpEntity entity = response.getEntity(); 

     System.out.println("----------------------------------------"); 
     System.out.println("+"+response.getStatusLine()+"+"); 
... 
+0

ли ответ сервера с URL изображения, чтобы быть загружены – primpap

+0

Нет, я использую непосредственно URL, например http://123.123.123.123/admin/snapshot.jpg и открыт в? в браузере отображается изображение. Мне нужно знать, как получить содержимое файла (что определено в http.url), но пока я могу найти в переменной ответа только заголовки, которые сервер отправляет (HTTP 1.1 200 OK ... и т. д.) ... – Nils

ответ

3

Ну, я решил это сам сейчас - здесь решение:

 StringBuffer tmp = new StringBuffer(); // for content 

     if (entity != null) { 
      InputStream is = entity.getContent(); 

      int l = 0; 
      byte[] t = new byte[1024]; 

      while ((l = is.read(t)) != -1) { 
       for (int i=0; i<l ; i++){ 
        tmp.append((char)t[i]); 
       } 
      } 
     } 

     return tmp.toString(); 
+1

Это совершенно неправильно .... это дает вам контент, а не файл ... – debracey

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