C# 4.0 需要对Jasper服务器执行HTTP GET请求以查看用户列表。但我得到了错误:(401)未经授权
Jasper server允许您通过执行此HTTP GET请求来查看用户列表- 当我使用web浏览器执行此操作时,我会收到一条弹出消息,要求验证用户名和密码 输入有效的用户名和密码后,我会得到如下xml格式的用户列表-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
<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();