后台代码获取 国外接口用 get方法数据传body

本文介绍了如何通过反射技术,将WebRequest的ContentBodyNotAllowed属性设为false,从而实现GET请求携带JSON数据。虽然这是一个技术性操作,但它展示了在特定情况下如何绕过常规限制。
摘要由CSDN通过智能技术生成

不多说,直接上代码

通过使用反射解决了这个问题,以欺骗WebRequest使用GET请求发送正文是合法的(根据最新的RFC)。我要做的是将ContentBodyNotAllowedHTTP动词“ GET”设置为false。

 var request = WebRequest.Create(url);

            request.ContentType = "application/json";
            request.Method = "GET";

            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("you json ");
            但是请注意,该属性ContentBodyNotAllowed属于静态字段,因此当其值更改时,它对于程序的其余部分仍然有效。对我而言,这不是问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java后台可以使用微信提供的接口获取小程序表单数据。具体步骤如下: 1. 在小程序端使用 wx.request() 函数向服务器发送表单数据。 2. 在Java后台编写接口,接收表单数据。可以使用SpringBoot框架中的@RestController注解来实现。 3. 在Java后台中调用微信提供的接口,使用微信提供的access_token来获取表单数据。可以使用HttpClient或者OkHttp等网络库来发送HTTP请求。 4. 解析返回的JSON数据获取表单数据。 5. 对表单数据进行相关处理,例如存储到数据库中。 下面是一个简单的Java后台代码示例: ``` @RestController public class FormController { @PostMapping("/submitForm") public ResponseEntity<String> submitForm(@RequestBody String formJson) { // 解析JSON数据 JSONObject jsonObject = JSONObject.parseObject(formJson); String formId = jsonObject.getString("formId"); JSONObject formData = jsonObject.getJSONObject("formData"); // 使用微信提供的接口获取表单数据 String accessToken = getAccessToken(); String url = "https://api.weixin.qq.com/cgi-bin/form/get?access_token=" + accessToken; JSONObject requestData = new JSONObject(); requestData.put("form_id", formId); String responseData = sendHttpPost(url, requestData.toJSONString()); // 处理表单数据 // ... return ResponseEntity.ok("success"); } private String getAccessToken() { // 获取access_token // ... } private String sendHttpPost(String url, String data) { // 发送HTTP POST请求 // ... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值