C# 调用Get接口 body带json传参(转载)

这几天在调用第三方的接口遇到了GET请求并且还要带有body参数,并且参数类型还得是Json,在我的记忆力GET都是URL传参,网上找了好多方法都不行。用Postman调用可以请求到数据,但是C#代码怎么弄都不行,用Postman生成得代码也不行。一直Http verb GET does not support body。之后找到了一个博文。分享给大家。可以使用,原为转载自https://www.cnblogs.com/wonder223/p/13853864.html#!comments

 try
{
    ///URL接口地址
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
    request.Proxy = null;
    request.KeepAlive = false;
    request.Method = "GET";
    request.ContentType = "application/json; charset=UTF-8";
    request.AutomaticDecompression = DecompressionMethods.GZip;
    string Data = "{\"CorpId\":\"300014\"}";///Json参数

        var type = request.GetType();
        var currentMethod = type.GetProperty("CurrentMethod", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(request);
        var methodType = currentMethod.GetType();
        methodType.GetField("ContentBodyNotAllowed", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(currentMethod, false);
 
        using (var streamWriter = new StreamWriter(request.GetRequestStream()))
        {
            streamWriter.Write(Data);
        }
 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream myResponseStream = response.GetResponseStream();
    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
    string retString = myStreamReader.ReadToEnd();
 
    myStreamReader.Close();
    myResponseStream.Close();
 
    if (response != null)
    {
        response.Close();
    }
    if (request != null)
    {
        request.Abort();
    }
 
    return retString;
}
catch (Exception ex)
{
    return ("ERROR:" + ex.Message + ":" + ex.InnerException.Message);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以使用 JavaScript 的 XMLHttpRequest 或者 Fetch API 来与后端交互,而不需要使用 C# 的 ChromiumWebBrowser 的 RegisterJsObject 方法。这样可以通过发送 HTTP 请求来调用后端的方法。具体步骤如下: 1. 在前端的 JavaScript 代码中,使用 XMLHttpRequest 或者 Fetch API 发送 HTTP 请求到后端的接口。 2. 后端接收到请求后,执行相应的方法逻辑,并返回结果。 3. 前端接收到后端返回的结果后,可以继续处理或者展示。 以下是一个简单的示例代码: 前端 JavaScript 代码: ```javascript // 发送 GET 请求 fetch('/backend/method') .then(response => response.json()) .then(data => { // 处理后端返回的数据 console.log(data); }) .catch(error => { // 处理错误 console.error(error); }); // 发送 POST 请求 fetch('/backend/method', { method: 'POST', body: JSON.stringify({ param1: 'value1', param2: 'value2' }), headers: { 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => { // 处理后端返回的数据 console.log(data); }) .catch(error => { // 处理错误 console.error(error); }); ``` 后端 C# 代码: ```csharp // 处理 GET 请求 [HttpGet] public IActionResult Method() { // 执行后端方法逻辑 var result = DoSomething(); // 返回结果 return Ok(result); } // 处理 POST 请求 [HttpPost] public IActionResult Method([FromBody] SomeModel model) { // 执行后端方法逻辑,使用传入的参数 model // 返回结果 return Ok(result); } ``` 请注意,这只是一个简单示例,实际情况可能需要根据具体需求进行调整。另外,确保在后端进行必要的安全性验证和参数验证,以防止潜在的安全问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值