WebService 接收JSON字符串
晚上学习时公司的同事,暂且叫A吧,A:“我们公司XXX纺织的AM接口不通,让我看下”,我:“接口写的不是有AJAX异步请求的示例嘛,参考下,我都测试过接口,都是通的。”,A:“我走的不是AJAX,走的CS端”,我:“哦,明白了,CS端的HttpWebRequest模拟前端的AJAX请求,我之前写过一次,我写个DEMO调试看看”
排查结果如下
错误示例,因为CS没法前面加前缀:jsonData

正确的AJAX示例,前面有jsonData(因为后台获取的是jsonData中的数据,CS端这个没法传)


网上找了半天解决方法,我们可以使用上下文,获取JSON数据流,然后在将流还原回JSON字符串即可
Stream s = HttpContext.Current.Request.InputStream;//获得json 字符流
//还原数据流
byte[] b = new byte[s.Length];
s.Read(b, , (int)s.Length);
string jsontext = Encoding.UTF8.GetString(b); //JSON字符串

cs端HttpWebRequest示例
private void button1_Click(object sender, EventArgs e)
{
string res = PostWebRequest("http://XXXXXXX/webService/eCimsService.asmx/GetHullParts", "{\"ProjNo\":\"H001\",\"SectionNo\":\"C002\",Data:[]}", Encoding.UTF8);
}
/// <summary>
/// Post数据接口
/// </summary>
/// <param name="postUrl">接口地址</param>
/// <param name="paramData">提交json数据</param>
/// <param name="dataEncode">编码方式(Encoding.UTF8)</param>
/// <returns></returns>
private static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
{
string responseContent = string.Empty;
try
{
byte[] byteArray = dataEncode.GetBytes(paramData); //转化
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Method = "POST";
webReq.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
webReq.Accept = "*/*"; //注:调试的过程中,报415,这里可能需要修改下
webReq.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36";
webReq.ContentLength = byteArray.Length;
using (Stream reqStream = webReq.GetRequestStream())
{
reqStream.Write(byteArray, , byteArray.Length);//写入参数
//reqStream.Close();
}
using (HttpWebResponse response = (HttpWebResponse)webReq.GetResponse())
{
using (Stream myResponseStream = response.GetResponseStream())
{
using (StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8))
{
responseContent = myStreamReader.ReadToEnd().ToString();
}
}
}
}
catch (Exception ex)
{
return ex.Message;
}
return responseContent;
}
WebService 接收JSON字符串的更多相关文章
- spring接收json字符串的两种方式
一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...
- springMVC 接收json字符串参数
/** 前台js拼接了一个数组 myparam = [a,b,c]; 在ajax中直接 {"myparam":JSON.stringify(myparam)} 传入springMV ...
- 原生ajax接收json字符串(简单介绍)
什么是json? JSON的全称是 Javascript Object Notation(javascript对象表示法),是基于javascript对象字面量,如果单从眼睛看,JSON里的数据是被保 ...
- jsp页面接收json字符串
jsp页面接收 后台添加
- api controller 接口接收json字符串参数
{"data":{"alarmRepeatTimes":2,"currentMode":1,"moduleResetTimeout ...
- 使用Spring MVC的@RequestBody注解接收Json对象字符串
最近公司在开发移动APP,APP上通过jQuery提交表单的json字符串格式数据到Java后端,之前通过request手动接收,非常麻烦,其实Spring MVC已经为我们提供了一个注解@Reque ...
- JQuery中根据表单元素动态拼接json 字符串
// <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- Java自定义方法转换前端提交的json字符串为JsonObject对象
前端提交json字符串格式数据,Java后端通过自定义方法接收json字符串数据并转换为JsonObject对象,代码如下放到RequestData.Java类中: public static JSO ...
- silverlight依据json字符串动态创建实体类
1.接收json字符串: //用JsonValue转换json字符串是为了之后获得json字符串的每行数据和每一列的列名 JsonValue jv = JsonValue.Parse(json); ...
随机推荐
- React躬行记(12)——Redux中间件
Redux的中间件(Middleware)遵循了即插即用的设计思想,出现在Action到达Reducer之前(如图10所示)的位置.中间件是一个固定模式的独立函数,当把多个中间件像管道那样串联在一起时 ...
- Python自动发送邮件--smtplib模块
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText f ...
- 使用NodeJS模块-第三方提供的模块(什么是npm)
第三方开发者提供的模块 第三方模块是由NodeJS社区或第三方个人开发的功能模块,这些功能模块以软件包的形式存在.被发布在npmjs注册表中.npmjs是一个注册中心,所有软件包的信息都会被记录到该注 ...
- 在vue中添加ico图标
准备:添加 ico图标在与index.html同级的目录 第一种方法: 在index.html中引入: <link rel="shortcuticon" type=" ...
- IntelliJ IDEA搭建Spring Boot 2 项目入门
之前都是用Eclipse,今天试了下IntelliJ IDEA,搭建了一个Spring Boot 2的Hello world项目. 一.IntelliJ IDEA 下载安装 官网下载:https:// ...
- linux学习(三)输入输出重定向和管道功能、cat命令、more命令
目录 输入输出重定向 输出重定向 管道功能 cat命令 more命令 @(输入输出重定向和管道功能) 输入输出重定向 输入重定向可以让用户将某个文件作为输入设备,输出重定向可以把某个文件作为输出设备, ...
- 如何确定UNDO_RETENTION参数的值以避免ORA-1555 (Doc ID 822411.1)
How to Determine the Value Of UNDO_RETENTION Parameter to Avoid ORA-1555 (Doc ID 822411.1) APPLIES T ...
- iozone - a filesystem benchmark tool 主要是用来测试文件系统 性能
简介: 磁盘设备之上是文件系统,测试磁盘的工具往往就是调用块设备驱动的接口进行读写测试.而文件系统的测试软件就是针对文件系统层提供的功能进行测试,包括文件的打开关闭速度以及顺序读写随机位置读写的 ...
- 如何在mysql数据库生成百万条数据来测试页面加载速度
1.首先复制一条sql 在复制前,需要确定该记录是否有主键 若无,则代码非常简单, "; 复制的表名↑ 粘贴的表名↑ ...
- X短期项目总结
刚退出了一个项目,简称为X项目.这个项目中,还是遇到了不少问题,也解决了部分问题,还是挺有收获的,所以总结一下. 虽然标题说是短期项目总结,但其实这个项目并不短, 持续了约3年时间. 所谓的短,只是我 ...