Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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
C# 4.0 需要对Jasper服务器执行HTTP GET请求以查看用户列表。但我得到了错误:(401)未经授权_C# 4.0_Get_Httprequest_Jasperserver - Fatal编程技术网

C# 4.0 需要对Jasper服务器执行HTTP GET请求以查看用户列表。但我得到了错误:(401)未经授权

C# 4.0 需要对Jasper服务器执行HTTP GET请求以查看用户列表。但我得到了错误:(401)未经授权,c#-4.0,get,httprequest,jasperserver,C# 4.0,Get,Httprequest,Jasperserver,Jasper server允许您通过执行此HTTP GET请求来查看用户列表- 当我使用web浏览器执行此操作时,我会收到一条弹出消息,要求验证用户名和密码 输入有效的用户名和密码后,我会得到如下xml格式的用户列表- <users> <user> <externallyDefined>false</externallyDefined> <fullName>John Smith</fullName> <use

Jasper server允许您通过执行此HTTP GET请求来查看用户列表-

当我使用web浏览器执行此操作时,我会收到一条弹出消息,要求验证用户名和密码

输入有效的用户名和密码后,我会得到如下xml格式的用户列表-

<users>

<user>

<externallyDefined>false</externallyDefined>

<fullName>John Smith</fullName>

<username>John</username>

</user>

<user>

<externallyDefined>false</externallyDefined>

<fullName>alicia</fullName>

<username>alicia</username>

</user>

</users>

如何修复此问题?

基于Jasper Rest的服务使用基于SOAP的基本Http身份验证。您可以尝试下面的方法来强制执行来自C web请求的基本身份验证

public void SetBasicAuthHeader(WebRequest request, String userName, String userPassword)
{
    string authInfo = userName + ":" + userPassword;
    authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
    request.Headers["Authorization"] = "Basic " + authInfo;
}
用法:

var request = WebRequest.Create("http://localhost:8080/jasperserver/rest_v2/users");
SetBasicAuthHeader(request, "jasper", "jasper");

var response = request.GetResponse();

嗯,这对我来说应该行得通,试着在fiddler中捕获请求,确保你的浏览器和C应用程序之间的头是相同的,-然后至少你会知道这是你的代码还是HTTP的问题,但是你的代码看起来应该对我有用。我做了一些非常类似的事情。我尝试了一下,但出现了这个错误。远程服务器返回了一个错误:400个错误请求。
var request = WebRequest.Create("http://localhost:8080/jasperserver/rest_v2/users");
SetBasicAuthHeader(request, "jasper", "jasper");

var response = request.GetResponse();