Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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# HttpClient未返回URI的json值_C#_Asp.net Mvc - Fatal编程技术网

C# HttpClient未返回URI的json值

C# HttpClient未返回URI的json值,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试使用HttpClient从Jira获取信息,但我无法看到任何信息。我希望能够获得与某些过滤器匹配的所有bug,以便将它们添加到程序中的表中 我曾尝试使用RESTAPI访问Jira,但每次访问时都表示问题或项目不存在。问题是,如果我在浏览器顶部的栏中输入URI,我可以看到我想要的JSON文本。这使我相信,我的代码不返回这些值的原因是授权问题。我正在使用基本身份验证发送凭据。我还想补充一点,我在cmd中使用cURL来用basicauth测试我的凭证,而且效果很好 public async

我正在尝试使用HttpClient从Jira获取信息,但我无法看到任何信息。我希望能够获得与某些过滤器匹配的所有bug,以便将它们添加到程序中的表中

我曾尝试使用RESTAPI访问Jira,但每次访问时都表示问题或项目不存在。问题是,如果我在浏览器顶部的栏中输入URI,我可以看到我想要的JSON文本。这使我相信,我的代码不返回这些值的原因是授权问题。我正在使用基本身份验证发送凭据。我还想补充一点,我在cmd中使用cURL来用basicauth测试我的凭证,而且效果很好

public async Task<JiraModel> GetBugs()
        {
           using (var client = new HttpClient())
            {
                string url = "https://myurl.atlassian.net/rest/api/3/project/VCMF";

                String username = "username";
                String password = "apikey";
                String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("UTF-8").GetBytes(username + ":" + password));

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", "Basic " + encoded);
                client.BaseAddress = new Uri("https://myurl.atlassian.net/rest/api/3/project/VCMF");
                var response = await client.GetAsync(url);
                var content = await response.Content.ReadAsStringAsync();
                return JsonConvert.DeserializeObject<JiraModel>(content);
            }
        }
公共异步任务GetBugs() { 使用(var client=new HttpClient()) { 字符串url=”https://myurl.atlassian.net/rest/api/3/project/VCMF"; 字符串username=“username”; 字符串password=“apikey”; String encoded=System.Convert.ToBase64String(System.Text.Encoding.GetEncoding(“UTF-8”).GetBytes(用户名+”:“+密码)); client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“授权”、“基本”+编码); client.BaseAddress=新Uri(“https://myurl.atlassian.net/rest/api/3/project/VCMF"); var response=wait client.GetAsync(url); var content=await response.content.ReadAsStringAsync(); 返回JsonConvert.DeserializeObject(内容); } }
在这段代码结束时,我应该得到字符串形式的json结果,但我一直得到一个404错误,而对于这段代码,该错误明确表示“找不到具有键“VCMF”的项目。”

这里的问题是您创建的授权头不正确

用于
AuthenticationHeaderValue
类的构造函数接受两个参数:scheme和parameter:

public AuthenticationHeaderValue(string scheme, string parameter)
{
}
第一个参数应该是scheme(本例中为Basic),第二个参数是base64编码的凭据:

因此,不是:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", "Basic " + encoded);
应该是:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", encoded);

希望这有帮助

使用curl时是否使用base64编码冒号?@HereticMonkey我可以使用实际凭据或base64 UTF8编码凭据获取curl中的json脚本。我使用的说明如下:看起来他们想要冒号编码。。。奇怪的这就是我的想法:)。但有一件事;你可能想读。。。