2016-02-28 380 views
0

我想通过C#访问Jira rest API。为此,我正在使用Windows.Web.Http.HttpClient。但是我得到的所有返回值都是HTML。Jira REST API返回HTML

我打电话以下网址:https://jira.atlassian.com/rest/api/latest/field/

小编辑
当我调用的URL从浏览器中正常工作,只是从调用HttpClient的不工作。

这里是我的代码:

public async Task<IRestResponse> Execute(RestRequest request) { 
    var restResponse = new RestResponse(); 
    var client = new HttpClient(); 
    var req = new HttpRequestMessage(request.Method, new Uri(BaseUrl, UriKind.RelativeOrAbsolute)); 
    foreach (var item in request.headers) { 
     req.Headers[item.Key] = item.Value; 
    } 

    req.Headers.Accept.Add(new HttpMediaTypeWithQualityHeaderValue("application/json")); 
    if (this.Authenticator != null) 
     req.Headers["Authorization"] = this.Authenticator.GetHeader(); 

    var res = await client.SendRequestAsync(req); 
    restResponse.Content = await res.Content.ReadAsStringAsync(); 
    restResponse.StatusCode = res.StatusCode; 
    restResponse.StatusDescription = res.ReasonPhrase; 

    if (!res.IsSuccessStatusCode) { 
     restResponse.ErrorMessage = restResponse.Content; 
     restResponse.ResponseStatus = ResponseStatus.Error; 
    } else if (res.StatusCode == HttpStatusCode.RequestTimeout) { 
     restResponse.ResponseStatus = ResponseStatus.TimedOut; 
    } else if (res.StatusCode == HttpStatusCode.None) { 
     restResponse.ResponseStatus = ResponseStatus.None; 
    } else { 
     restResponse.ResponseStatus = ResponseStatus.Completed; 
    } 

    return restResponse; 
} 
+0

你看结果消息还是流量(f.e.与fiddler)找出有关结果的泥潭?有时API会有一些奇怪的要求,比如没有用户代理集的情况下,github不起作用。 –

+0

错误,你的意思是jira.atlassian._com_?对于.net,我只会得到错误,而.com版本会返回理智的信息。 – Koshinae

+0

@KaiBrummund我刚刚尝试在没有UA的提琴手中发送请求,并且它工作正常。 – Knerd

回答

1

我才发现我的问题,我不添加任何地方的相对路径。它只是称为BaseUrl,意思是https://jira.atlassian.com/,它解释了为什么我得到HTML页面。