博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# POST数据base64到接口会出错的问题
阅读量:6208 次
发布时间:2019-06-21

本文共 2165 字,大约阅读时间需要 7 分钟。

这个base64在requestHeader里面变成了
base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH%2BiRVKDkbOmUiKpxW0%2FS6rUgfLmSa527Y8zZ3GmEzfXMB8ry8fH5GjGeJFGqFxDC4A2hLlvIFzyiDeUCqloGDAJoOLa8Jnif1C8nwRte0GNCRM5RXkshLKZP2itZclgDCYz6OgAF7oLNluoB44cZ3AgF1Q8hVgME8LeqgOqxsIzTt3Xn%2B96j7zp%2FwA%3D

他把base64里面一些/和= 给转成%2F之类的东西了。

所以webservice接收到的参数是错的。。

解决办法:

 

string base64 = "base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH+iRVKDkbOmUiKpxW0/S6rUgfLmSa527Y8zZ3GmEzfXMB8ry8fH5GjGeJFGqFxDC4A2hLlvIFzyiDeUCqloGDAJoOLa8Jnif1C8nwRte0GNCRM5RXkshLKZP2itZclgDCYz6OgAF7oLNluoB44cZ3AgF1Q8hVgME8LeqgOqxsIzTt3Xn+96j7zp/wA=";byte[] buffer = Convert.FromBase64String(base64);string Base64StrData = Convert.ToBase64String(buffer).Replace("+", "%2B");//注意加号(’+‘)的替换处理,否则由于加号经过Url传递后变成空格而得不到合法的Base64字符串        string postData = "str=" + Base64StrData;    byte[] dataArray = Encoding.Default.GetBytes(postData);

 

///         /// POST请求与获取结果        ///         public static string HttpPost(string Url, string postDataStr)        {            try            {                postDataStr = postDataStr.Replace("+", "%2B");                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);                request.Method = "POST";                request.Timeout = 6000000;                request.ContentType = "application/x-www-form-urlencoded";                request.ContentLength = postDataStr.Length;                StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII);                writer.Write(postDataStr);                writer.Flush();                HttpWebResponse response = (HttpWebResponse)request.GetResponse();                string encoding = response.ContentEncoding;                if (encoding == null || encoding.Length < 1)                {                    encoding = "UTF-8"; //默认编码                }                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));                string retString = reader.ReadToEnd();                return retString;            }            catch (Exception ex)            {                return null;            }        }

 

转载于:https://www.cnblogs.com/testsec/p/6095818.html

你可能感兴趣的文章
COM组件的运行机制
查看>>
sql server 2008 身份验证失败 18456
查看>>
广义表
查看>>
支持向量机SVM算法原理及应用(R)
查看>>
python 3 面向过程编程
查看>>
iPhone手机屏幕尺寸(分辨率)
查看>>
笔试题③
查看>>
css 属性选择器笔记
查看>>
PHP工厂模式计算面积与周长
查看>>
Flask学习 一 基本结构
查看>>
sqlserver2005仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'SendMealAddress'中为标识列指定显式值。...
查看>>
HDU1147:Pick-up sticks(线段相交)
查看>>
PHP快速排序及其时间复杂度
查看>>
peripheralStateNotificationCB
查看>>
(转) Spring读书笔记-----Spring的Bean之配置依赖
查看>>
精妙SQL语句收集(转)
查看>>
(转)android WebView loadData不能解析(找不到网页)
查看>>
IOS UIPageController
查看>>
.Net转Java自学之路—SpringMVC框架篇八(RESTful支持)
查看>>
博客作业05--查找
查看>>