Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IIS windows身份验证错误(401.1)_Java_Sql Server_Http_Iis - Fatal编程技术网

Java IIS windows身份验证错误(401.1)

Java IIS windows身份验证错误(401.1),java,sql-server,http,iis,Java,Sql Server,Http,Iis,我已经用PHP5.3和SQLServer配置了IIS8.0 我不确定出了什么问题。我可以在web浏览器中看到我的JSON字符串,当我在浏览器中键入URL时 但是当我把它传递给下面的代码时,它是returnme IIS 8.0 Detailed Error - 401.2 - Unauthorized 我的eclipse中的401.2错误页面 我正在通过Windows身份验证连接到数据库。因此,我已在IIS中启用Windows身份验证。除了Windows身份验证之外,我无法进行任何其他身份验证,

我已经用PHP5.3和SQLServer配置了IIS8.0

我不确定出了什么问题。我可以在web浏览器中看到我的JSON字符串,当我在浏览器中键入URL时

但是当我把它传递给下面的代码时,它是returnme

IIS 8.0 Detailed Error - 401.2 - Unauthorized
我的eclipse中的401.2错误页面

我正在通过Windows身份验证连接到数据库。因此,我已在IIS中启用Windows身份验证。除了Windows身份验证之外,我无法进行任何其他身份验证,那么我的JSONstring也不会从浏览器返回,在这种情况下

我已经尝试了下面URL中提到的解决方案

http://support.microsoft.com/kb/942043
这个问题仍然存在

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;

public class JSONTester {

    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) 
    {
        InputStream is = null;
        String json = "";

        try 
        {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://localhost/hive/get_all_products.php");
            httpPost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();           

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            System.out.println(e.toString());
        }
        System.out.println(json);
    }
}
任何帮助都会很好


谢谢

确保您正在进行身份验证的帐户对网站目录中的文件具有权限。

Internet Explorer是唯一一个使用现成集成模式进行NTLM身份验证的浏览器,这就是您的URL在“浏览器”中起作用的原因。您的Java HttpClient必须显式地进行身份验证,并从服务器上回答NTLM质询。见:

NTLM是受支持的最复杂的身份验证协议 HttpClient。它是由Microsoft设计的专有协议,没有 公开可用的规范。。。NTLM 身份验证要求NTCredentials的实例可用于 服务器的域名或默认凭据。注意 由于NTLM不使用领域概念,HttpClient使用 服务器的域名作为域的名称。还请注意 提供给NTCredentials的用户名不应以 域-ie:“adrian”是正确的,而“domain\adrian”不是 正确…
HttpClient为NTLMv1(NTLM协议的早期版本)提供有限的支持HttpClient根本不支持NTLMv2

重要的是,HttpClient不支持集成身份验证。您必须提供显式凭据,这使得它总是探测到错误的做法,因为需要显式提供帐户密码。请确保您不存储它,而是向用户询问,这与Firefox访问请求NTLM质询的站点时的做法大致相同

阅读更多细节