簡體   English   中英

apache httpclient + ntlm身份驗證

[英]apache httpclient + ntlm Authentication

我有一個客戶端通過https帖子將文件上傳到服務器。 它使用代理,這是我的代碼

public void upload() throws Exception {

    //create default client
    DefaultHttpClient client = new DefaultHttpClient();

    //set proxy authentication if specified
    if (proxy.equals("yes") && proxyAuth.equals("yes")){
    client.getCredentialsProvider().setCredentials(
            new AuthScope(address, port),
            new UsernamePasswordCredentials(proxyUsername, proxyPassword));
    }

    //set proxy if specified
    if (proxy.equals("yes")){
        HttpHost proxy = new HttpHost(address, port);
        client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,proxy);
    }

    HttpPost post = new HttpPost(url);
    MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

    File dir = new File(inputFilePath);
    File[] fileArray = dir.listFiles(); 
    File file = fileArray[0];

    FileBody uploadFilePart = new FileBody(file);

    entity.addPart("file", uploadFilePart);
    entity.addPart("username", new StringBody(username));
    entity.addPart("password", new StringBody(password));

    post.setEntity(entity);

    //execute post and get response
    String response = EntityUtils.toString(client.execute(post).getEntity(), "UTF-8");

    client.getConnectionManager().shutdown();

    log4j.info(response);

    if(!response.substring(0, 3).equalsIgnoreCase("200")){
        Exception e = new Exception("An error has occurred server side: ");
        throw e;
    }
}

現在問題是這有時完美有效,有時我得到以下錯誤。

org.apache.http.impl.client.AbstractAuthenticationHandler.selectScheme(AbstractAuthenticationHandler.java:149) - 不支持身份驗證方案ntlm“

您需要按照http://hc.apache.org/httpcomponents-client-ga/ntlm.html中的說明注冊NTLM處理程序:

client.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());

嘗試 - 而不是這個:新的UsernamePasswordCredentials(proxyUsername,proxyPassword)

使用此:new NTCredentials(proxyUsername,proxyPassword,“localhostname”,“domain”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM