C# POST数据base64到接口会出错的问题

这个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);
/// <summary>
        /// POST请求与获取结果
        /// </summary>
        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;
            }
        }
时间: 2024-10-11 16:22:57

C# POST数据base64到接口会出错的问题的相关文章

显示图像数据的高级接口 UIImage

详解 UIKit:显示图像数据的高级接口 UIImage 转载自:http://www.cocoachina.com/ios/20151207/14376.html 分类:iOS开发 来源:南峰子的技术博客 本系列主要基于Apple官方文档,更多的是对参考文档重点内容的翻译与补充.该系列中的每篇文章会持续更新与补充.如有问题,欢迎通过微博告诉我,我将及时进行更正,谢谢!!! UIImage对象是iOS中用来显示图像数据的高级接口.我们可以从文件,NSData,Quartz图片对象中创建UIIma

数据访问层接口

IDBObject(数据访问层接口) Contents IDBObject ExecuteProcedure(string storedProcName, IDataParameter[] parameters) RunProcedure RunProcedure(string storedprocName, IDataParameter[] parameters, OperateReader OReader) RunProcedure(string storedprocName, IDataP

python结合excel数据轻松实现接口自动化测试(一)

在刚刚进入测试行业的时候,最开始也是做功能测试,我想很多伙伴和我一样,觉得自动化测试都很高端,很神秘.迫不及待的想去学习作自动化测试. 以前比较常用数据库+python做自动化,后面发现excel个人觉得更加适合,刚开始自己做自动话测试的时候,很急切的想立刻搭建好整个框架,但心急吃不了热豆腐, 还是从基本的开始,这里介绍python结合excel数据实现单个接口自动化测试的步骤,理解了这个,后面就可以用到整个框架,封装成公用模块,批量读取数据,执行数据. 现在以我们公司的一登录接口为列,输入参数

HttpPost,MD5,Base64等接口调用中会用到的方法

HttpPost调用方法: //url: 接口地址,param:类似key1=value1&key2=value2字符串 public static string WebRequestPost(string url, string param) { string strResult = ""; HttpWebRequest request = null; HttpWebResponse response = null; Stream stream = null; StreamR

HttpClient发送Json数据到指定接口

项目中遇到将Json数据发送到指定接口,于是结合网上利用HttpClient进行发送. /** * post发送json数据 * @param url * @param param * @return */ private String doPost(String url, JSONObject param) { HttpPost httpPost = null; String result = null; try { HttpClient client = new DefaultHttpCli

Android中 GsonFormat插件解析Jason 数据+和风天气接口解析案例

首先 转载自http://www.cnblogs.com/androidsuperman/p/4579249.html     感谢 @西北野狼  同学. 第一部分: GsonFormat 插件基本使用方法 很久以前写json解析用原始的解析json的方法,后来为了加快开发进度,开始使用gson,fastjson等第三方jar包来进行json解析,为了保持apk足够小,不因为引入jar包导致apk文件过大,选择使用gson来加速json解析,当然,去年androidstudio 1.0版本出来,

可视化接口管理工具RAP,模拟数据,校验接口

最近看到一个不错的接口管理的工具,分享一下 RAP ppt介绍:http://www.imooc.com/video/11060 RAP是一个可视化接口管理工具 通过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义,通过一系列自动化工具提升我们的协作效率. 使用网址:http://rap.taobao.org/ GitHub地址:https://github.com/thx/RAP 一些文档:https://github.com/thx/RAP/wiki/home_cn 官网:

ssh通用数据访问层接口及实现

package org.dao; import java.io.Serializable;import java.util.LinkedHashMap;import java.util.List;import java.util.Map; /** * 通用数据访问层 */ public interface BaseDao<T> { /** * 保存单个实体 * @param entity */ public void save(T entity); /** * 级联保存单个实体对象 * @pa

Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名

Oracle数据库,用mybatic批量插入数据: <insert id="saveBatch" parameterType="io.renren.entity.NodeDataEntity" databaseId="oracle"> insert into "NODE_DATA" ( "NODE_ID", "DATA_TIME", "DATA_VALUE"