2015-09-04 97 views
0

我遇到问题,并认为我可能会错过某些与RestSharp。 我正在授权并取回一个cookie就好了......看下面。但是当我打电话来获取数据时,它会返回未授权的状态。它在Postman中工作得很好,但不在下面的代码中。我正在使用控制台应用程序,并尝试通过AddHeader,AddCookie发送cookie,并将其作为参数。 responseLogin包含正确的cookie。任何帮助都会很棒。RestSharp返回未授权

Dim clientLogin = New RestClient("http://[URI to Authorize]............") 
    Dim requestLogin = New RestRequest(Method.POST) 

    requestLogin.AddParameter("application/x-www-form-urlencoded", "[Username and password here.....]", ParameterType.RequestBody) 
    Dim responseLogin As IRestResponse = clientLogin.Execute(requestLogin) 




    Dim client = New RestClient("http://[URI to get data]............") 
    Dim request = New RestRequest(Method.GET) 

    request.AddHeader("Cookie", responseLogin.Cookies(0).Value.ToString) 
    request.AddHeader("Accept", "application/json") 

    Dim response As IRestResponse = client.Execute(request) 

回答

0

Cookie标头需要包含cookie的名称和值,例如,

Dim authCookie = responseLogin.Cookies(0) ' Probably should find by name 
request.AddHeader("Cookie", String.Format("{0}={1}", authCookie.Name, authCookie.Value)) 

然而,the documentation(我从来没有用过RestSharp个人)说,RestSharp有饼干自动支持,所以如果你重用RestClient实例并设置CookieContainer你不需要做任何事情来处理手动(除非你想要,在某些情况下可能会更好)。

Dim client = New RestClient(New Uri("[Base URI...]")) 
client.CookieContainer = New System.Net.CookieContainer() 

Dim requestLogin = New RestRequest("[login page path]", Method.POST) 
requestLogin.AddParameter("application/x-www-form-urlencoded", "[Username and password here.....]", ParameterType.RequestBody) 
Dim responseLogin As IRestResponse = client.Execute(requestLogin) 

Dim request = New RestRequest("[data api path", Method.GET) 
request.AddHeader("Accept", "application/json") 
Dim response As IRestResponse = client.Execute(request) 

你很可能只是重复使用不同RestClient实例,而不是重用client cookie的容器。

相关问题