首页 > 代码库 > 关于c#调用java中间件api的几个问题

关于c#调用java中间件api的几个问题

由于项目需要,做的c#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码。。。)

放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还是不安全。。。。。

最后的方法就是c#这边调用java的api返回连接串(它们那边做了不知道什么权限的)使用的HttpRequest,一下是postman里的结果(两个入参用于实现每次请求的校验)

技术分享

在网上找了一段代码做个demo单个参数是成功执行。。。

下面是我的修改后代码

 try {                    HttpWResp = (HttpWebResponse)myReq.GetResponse();                } catch (WebException ex) {                    HttpWResp = (HttpWebResponse)ex.Response;                }

这段代码可以让你看到你的错误,返回的结果是什么,例如技术分享

返回下面的这部分东西,加上上面那句话,错误可以看到。。。

 

一般的错误就是

HttpWResp = (HttpWebResponse)myReq.GetResponse();  出现异常,出现异常的原因最可能是参数出现问题(如果url有效且create成功了)
插入一下request的几种方式

application/x-www-form-urlencoded    一般参数就是拼接的形式a=A&b=B....

application/json     参数就是以json的形式被发送 var data = http://www.mamicode.com/{‘title‘:‘test‘‘sub‘ : [1,2,3]};

我自己出现的问题就是两个入参的时候用的type是

application/x-www-form-urlencoded   所以我以为入参的形式就是a=A&b=B...还甚至认为是没加双引号的问题

string strRequestData = "http://www.mamicode.com/{A:5800a00d00000000, B: 1901234567891193}";最后将入参改成了这种形式就好了

(其实这里很疑惑,用的入参类型和入参方式不匹配,明明应该是拼接的参数啊。。。。。。。。。。。。)

private static string Post(string strUrl, string paramA, string paramB)        {            StringBuilder responseData = new StringBuilder();            Encoding code = Encoding.GetEncoding("UTF-8");            //待请求参数数组字符串            //string strRequestData = http://www.mamicode.com/HttpUtility.UrlEncode("A", code) + "=" + HttpUtility.UrlEncode(paramA, code) + "&" + HttpUtility.UrlEncode("B", code) + "=" + HttpUtility.UrlEncode(paramB, code);            //string strRequestData = "http://www.mamicode.com/companyName=" + Uri.EscapeDataString(companyName);            //string strRequestData = "http://www.mamicode.com/{A=" + paramA + "&" + "B=" + paramB + "}";            string A = "5800a00d00000000";            string B = "1901234567891193";            //string strRequestData = "http://www.mamicode.com/A="  + A + "&" + "B=" + B;            string strRequestData = http://www.mamicode.com/"{A:5800a00d00000000, B: 1901234567891193}";        //string strRequestData = http://www.mamicode.com/{"A":"5800a00d00000000","A":"5800a00d00000000"};        //string strRequestData = http://www.mamicode.com/HttpUtility.UrlEncode("companyName", code) + "=" + HttpUtility.UrlEncode("969325639000980000000001", code);        //把数组转换成流中所需字节数组类型        byte[] bytesRequestData =http://www.mamicode.com/ Encoding.UTF8.GetBytes(strRequestData);            //byte[] bytesRequestData = http://www.mamicode.com/encoding.GetBytes(strRequestData);>//构造请求地址            string strResult = "";            //请求远程HTTP                        try {                //设置HttpWebRequest基本信息                HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(strUrl);                myReq.Timeout = 5000;                myReq.Method = "post";                myReq.ContentType = "application /x-www-form-urlencoded";                //填充POST数据                myReq.ContentLength = bytesRequestData.Length;                Stream requestStream = myReq.GetRequestStream();                requestStream.Write(bytesRequestData, 0, bytesRequestData.Length);                requestStream.Close();                //发送POST数据请求服务器                HttpWebResponse HttpWResp;                 try {                    HttpWResp = (HttpWebResponse)myReq.GetResponse();                } catch (WebException ex) {                    HttpWResp = (HttpWebResponse)ex.Response;                }                Stream myStream = HttpWResp.GetResponseStream();                //获取服务器返回信息                StreamReader reader = new StreamReader(myStream, code);                                String line;                while ((line = reader.ReadLine()) != null) {                    responseData.Append(line);                }                myReq.KeepAlive = false;                //释放                myStream.Close();                strResult = responseData.ToString();            } catch (Exception exp) {                strResult = "报错:" + exp.Message;            }            return responseData.ToString();        }

 

关于c#调用java中间件api的几个问题