当前位置: 首页 > 知识库问答 >
问题:

403禁止在C#中使用Web请求错误,但在邮递员中工作

宋新知
2023-03-14

我有一个授权码,在调用api时,我需要将它和一些头值一起传递到主体中。当从邮递员那里尝试同样的方法时,它工作正常,但是C#Webclient抛出403错误。

代码如下:-

公共字符串GetResponse(字符串AuthCode){

string url = "https://example.com//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);

        // Create the request
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
        httpWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
        httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Basic " +  "MzE4OGQwYjQtZTRlOC00MTZjLTg5NjAtZDNlYWFhMmNjY2IxOkx3NiVBa0x4NWtPM01rJTJ5RWwxbW1jR0ZYZmhTQmk1NHhIRCpzNiUyVUd5WXN0MCNVbyNMNWQhcVlpZE93djc=");
        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;

}

邮差卷曲命令:-

从curl请求生成:

curl-X POST'https://example.com//openam/oauth2/access_token?grant_type=authorization_code

我想不出这个问题。谁能帮帮我吗

共有2个答案

顾乐家
2023-03-14

我也面临同样的问题。删除名为"主机"的参数后得到了修复。我正在使用第三方rest API.他们可能有一些限制。

陆高峰
2023-03-14

使用RestSharp和传递正确的头值解决了问题

var client = new RestClient("https://example.com/openam/oauth2/access_token?grant_type=authorization_code&realm=/cbpgatqa");
            var request = new RestRequest(Method.POST);

            request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
            request.AddHeader("Cache-Control", "no-cache");
            request.AddHeader("Authorization", "Basic MzE4OGQwYjQtZTRlOC00MTZjLTg5NjAtZDNlYWFhMmNjY2IxOkx3NiVBa0x4NWtPM01rJTJ5RWwxbW1jR0ZYZmhTQmk1NHhIRCpzNiUyVUd5WXN0MCNVbyNMNWQhcVlpZE93djc=");
            request.AddParameter("undefined", "code=" + AuthCode + "&redirect_uri=http%3A%2F%2Flocalhost%3A8080", ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);

            using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(response.Content)))
            {
                // Deserialization from JSON  
                DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(Token));
                Token token = (Token)deserializer.ReadObject(ms);
            return  userinfo=  GetuserInfo(token.id_token);
            }
 类似资料:
  • 我正在开发一个Registraion API,它接受以下/request perameters的json输入 但是当我从android应用程序调用时,它给出了错误的响应,错误代码为,但在Postman上工作得很好。 我的API客户端 衷心感谢

  • 我有一个非常基本的webApi构建/运行(相当模板应用程序,仅此而已),以便遵循一个培训视频。GET和DELETE调用工作正常,PUT和POST给出400错误。诚然,对所有这些都很新,所以我正在寻找一些基本的方向,关于如何排除故障。相关的屏幕截图如下,我很高兴提供其他要求。提前谢了。

  • 我正试着在邮递员上打API。API正在服务器上工作,但我没有收到任何数据。以下是视觉图像: 它是回应我与“没有数据”和400错误的要求。

  • 我正在尝试使用Postman访问API,以使用基本身份验证获取响应,但当我提交数据时,它会给我带来可怕的400错误,这显然表明某些标头设置不正确。 以下是API信息: 作为回应,我应该得到一个JSON形式的加密令牌,而不是得到这个错误。 以下是邮差截图: 我错过了什么吗?

  • 对localhost的Ajax请求返回403错误。然而,当我更改controller requestMethod以获取并在浏览器上打开请求“url”时,它会显示从服务器返回的json数据。我希望使用这些数据填充一个下拉列表。请帮帮我。我正在使用spring security 4.0和spring MVC框架。CSRF未禁用。此外,该url在Spring得到保护。 我在这里查看了相关问题,但没有找到

  • 我正在使用volley库我的volley请求在牛轧糖,奥利奥,棉花糖操作系统工作完美,但它不工作在Lollipop设备,它给出错误服务器错误,我处理了错误,我发现错误是400坏请求,我正在分享错误屏幕截图,也分享了我的代码,请帮助我,我的api也工作在邮递员... 我的请求代码是: