背景:对接第三方接口,需要从登陆接口中获取cookie,在后续接口请求中使用。
过程:本来是应该前台直接对接接口的,可是前台反馈获取不到第三方接口完整cookie,所以只能后台来搞一下了。
解决:
使用HttpWebRequest进行get请求。
1.获取cookie:
public static string SendRequest(string url, Encoding encoding)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "GET";
webRequest.CookieContainer = new CookieContainer();
//webRequest.Headers.Add("Cookie", "JSESSIONID=AFA73CF257CDD40D6AFB83CF1BA6F3D4; _USER_NAME=21010037");
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
//cookie.Add(webResponse.Cookies);
cookiestr = webResponse.Headers.Get("Set-Cookie");//获取Cookie
StreamReader sr = new StreamReader(webResponse.GetResponseStream(), encoding);
string str = sr.ReadToEnd();
return str;
}
如上,在请求返回webResponse的头部获取cookie。
2.请求携带cookie:
public static string SendRequest1(string url, Encoding encoding)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "GET";
//webRequest.CookieContainer = cookie;
webRequest.Headers.Add("Cookie", cookiestr);//携带Cookie
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream(), encoding);
string str = sr.ReadToEnd();
return str;
}
如上,在get请求头中添加Cookie。