我有一个授权代码,我需要在调用api时使用一些标头值传入正文。当从邮递员那里尝试同样的工作时它的工作正常,但C#Webclient抛出403错误。
I have a Authorization code which i need to pass in body with some header value when calling a api. when trying the same from postman its working fine but C# Webclient throwing 403 error.
以下代码: -
public string GetResponse(string AuthCode) {
public string GetResponse(string AuthCode) {
string url =" example//openam/oauth2/access_token?grant_type = authorization_code& realm = / cbpgatqa" ;; Uri uri = new Uri(string.Format(url)); ASCIIEncoding encoding = new ASCIIEncoding(); string postData =" code =" + AuthCode +"& redirect_uri =" +" http:// localhost:8080"; byte [] data = Encoding.GetEncoding(" UTF-8")。GetBytes(postData); //创建请求 var httpWebRequest =(HttpWebRequest)WebRequest.Create(uri); httpWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; httpWebRequest.Headers.Add(HttpRequestHeader.Authorization," Basic" + AuthCode); httpWebRequest.ContentType =" application / json"; httpWebRequest.Method =" POST"; httpWebRequest.ContentLength = data.Length; httpWebRequest.UserAgent = @" Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 51.0.2704.106 Safari / 537.36" ;; Stream stream = httpWebRequest.GetRequestStream(); stream.Write(data,0,data.Length); stream.Close(); //获取回复 HttpWebResponse httpResponse = null; 试试 { httpResponse =(HttpWebResponse)httpWebRequest.GetResponse(); }¥b $ b catch(例外情况) { Console.WriteLine("获取资源时的异常"+"ex.Message"); 返回null; } string result = null; 使用(var streamReader = new StreamReader(httpResponse.GetResponseStream()))) { result = streamReader.ReadToEnd(); } 返回结果;
string url = "example//openam/oauth2/access_token?grant_type=authorization_code&realm=/cbpgatqa"; Uri uri = new Uri(string.Format(url)); ASCIIEncoding encoding = new ASCIIEncoding(); string postData = "code=" + AuthCode + "&redirect_uri=" + "localhost:8080"; byte[] data = Encoding.GetEncoding("UTF-8").GetBytes(postData); // Create the request var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri); httpWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Basic " + AuthCode); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; httpWebRequest.ContentLength = data.Length; httpWebRequest.UserAgent = @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36"; Stream stream = httpWebRequest.GetRequestStream(); stream.Write(data, 0, data.Length); stream.Close(); // Get the response HttpWebResponse httpResponse = null; try { httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); } catch (Exception ex) { Console.WriteLine("Exception while getting resource " + ex.Message); return null; } string result = null; using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { result = streamReader.ReadToEnd(); } return result;
}
Postman Curl命令: -
Postman Curl command:-
从curl请求生成:
Generated from a curl request:
curl -X POST 'https://example//openam/oauth2/access_token?grant_type=authorization_code&realm=/cbpgatqa' -H '授权:基本MzE4OGQwYjQtZTRlOC00MTZjLTg5NjAtZDNlYWFhMmNjY2IxOkx3NiVBa0x4NWtPM01rJTJ5RWwxbW1jR0ZYZmhTQmk1NHhIRCpzNiUyVUd5WXN0MCNVbyNMNWQhcVlpZE93djc =' -H"缓存控制:无-cache' -H'内容类型:application / x-www-form-urlencoded' -d'code = 93317468-7464-4804-b38a-43e13265c4ac& redirect_uri = http%3A%2F%2F localhost%3A8080%2F'
curl -X POST 'example//openam/oauth2/access_token?grant_type=authorization_code&realm=/cbpgatqa' -H 'Authorization: Basic MzE4OGQwYjQtZTRlOC00MTZjLTg5NjAtZDNlYWFhMmNjY2IxOkx3NiVBa0x4NWtPM01rJTJ5RWwxbW1jR0ZYZmhTQmk1NHhIRCpzNiUyVUd5WXN0MCNVbyNMNWQhcVlpZE93djc=' -H 'Cache-Control: no-cache' -H 'Content-Type: application/x-www-form-urlencoded' -d 'code=93317468-7464-4804-b38a-43e13265c4ac&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F'
我无法弄清楚问题。任何人都可以帮助我
I am not able to figure it out the issue . Can anyone please help me
推荐答案
您好Kumar93,
Hi Kumar93,
感谢您发布此处。
根据我的搜索,您可以通过以下两种方式来解决403 Forbidden。
Based on my search, here are two ways for your reference to solve 403 Forbidden.
stackoverflow/questions/3272067/webclient-403-禁止
stackoverflow/questions/2794260/webclient-the-remote-server-returned-an-error-403-forbidden
最诚挚的问候,
Wendy
更多推荐
403使用Webrequest的禁止错误但在邮递员中有效
发布评论