Po tym, jak miałem wiele problemów z uwierzytelnianiem wyprzedzającym, w końcu udało mi się to zrobić. Teraz następny problem. Chcę dostać plik, ale nie wiem jak. Myślałem, że dane pliku mogą być w zmiennej odpowiedzi, ale tak nie jest. Jakieś pomysły, jak to może działać? Próbuję go od dni bez powodzenia :(. -. Zasadniczo Próbuję pobrać plik jpeg, która jest na serwerze chronionym przez prem authPobieranie pliku za pomocą DefaultHTTPClient i uwierzytelnianie zapobiegawcze
// 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()+"+");
...
Czy reagować serwera z adresem URL obrazu do pobrania – primpap
Nie używam bezpośrednio URL np http://123.123.123.123/admin/snapshot.jpg i otwarte? przeglądarka, w której wyświetlany jest obraz.Muszę wiedzieć, jak uzyskać zawartość pliku (która jest określona w http.url), ale na razie mogę znaleźć w zmiennej-odpowiedzi tylko nagłówki, które wysyła serwer (HTTP 1,1 200 OK ... i tak dalej) ... – Nils