关于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 = {‘title‘:‘test‘‘sub‘ : [1,2,3]};

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

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

string strRequestData = "{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 = HttpUtility.UrlEncode("A", code) + "=" + HttpUtility.UrlEncode(paramA, code) + "&" + HttpUtility.UrlEncode("B", code) + "=" + HttpUtility.UrlEncode(paramB, code);

            //string strRequestData = "companyName=" + Uri.EscapeDataString(companyName);
            //string strRequestData = "{A=" + paramA + "&" + "B=" + paramB + "}";
            string A = "5800a00d00000000";
            string B = "1901234567891193";
            //string strRequestData = "A="  + A + "&" + "B=" + B;
            string strRequestData = "{A:5800a00d00000000, B: 1901234567891193}";
        //string strRequestData = { "A":"5800a00d00000000","A":"5800a00d00000000"};
        //string strRequestData = HttpUtility.UrlEncode("companyName", code) + "=" + HttpUtility.UrlEncode("969325639000980000000001", code);
        //把数组转换成流中所需字节数组类型
        byte[] bytesRequestData = Encoding.UTF8.GetBytes(strRequestData);
            //byte[] bytesRequestData = 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();
        }
时间: 2024-10-12 16:39:49

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

java调用淘宝api

代码下载地址:http://www.zuidaima.com/share/1550463234034688.htm 原文:java调用淘宝api java代码结构: java调用淘宝api,布布扣,bubuko.com

JAVA调用聚合天气api接口示例

查询天气预报在APP中常用的一个常用功能,聚合数据免费天气api接口可以根据根据城市名/id查询天气.根据IP查询天气.据GPS坐标查询天气.查询城市天气三小时预报,并且支持全国不同城市天气预报查询. 代码描述:基于JAVA的免费天气api接口调用示例,根据文档中注明的需求参数,调用接口返回数据. 关联数据:免费天气api 接口地址:https://www.juhe.cn/docs/api/id/39 step1:选择本文所示例的接口"免费天气api" url:https://www.

Java 调用Google Map Api解析地址,解析经纬度实例

Java 调用Google Map Api解析地址,解析经纬度实例 使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使用的是Google的地理编码服务.一般而言数据量不大的情况使用是不限制的.按照Google官方说法是连续90天请求地理编码服务次数超过2000次就会受到限制,因此可以将这些解析好的地址放在Database中,这样可以避免重复请求同一个地址. JAVA Code: /* * System Abbrev

Java后端API调用身份验证的思考

在如今信息泛滥的数字时代中对产品安全性的要求越来越高了,就比如说今天要讨论的Java后端API调用的安全性,在你提供服务的接口中一定要保证调用方身份的有效性,不能让非法的用户进行调用,避免数据泄露.那如何有效地进行身份验证呢? Google的cache缓存技术,它是一种很好地的本地缓存技术解决方案. ------20200103闪?? 原文地址:https://www.cnblogs.com/bien94/p/12146417.html

Atitit 图像处理之编程之类库调用的接口api cli gui ws rest  attilax大总结.docx

Atitit 图像处理之编程之类库调用的接口api cli gui ws rest  attilax大总结.docx 1. 为什么需要接口调用??1 1.1. 为了方便集成复用模块类库1 1.2. 嫁接不同的语言与类库,以及嵌入dsl1 1.3. 方便跨机器,跨开发板,跨硬件,跨运行环境的代码复用2 2. 接口api的历史2 2.1. 发展历程2 2.2. API 这个类库默认提供的接口,要求同语言调用一般2 2.3. Cli接口 命令行接口.单机跨语言接口(推荐比较常用)3 2.4. 图形用户

全面挖掘Java Excel API 使用方法

使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事.在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在JSP或Servlet 中创建一个CSV (comma separated values)文件,并将这个文件以MIME,text/csv类型返回给浏览器,接着浏览器调用Excel并且显示CSV文件.这样只是说可以访问到Excel文件,但是还不能真正的操纵Excel文件,

新增的Java MapReduce API

http://book.51cto.com/art/201106/269647.htm Hadoop的版本0.20.0包含有一个新的 Java MapReduce API,有时也称为"上下文对象"(context object),旨在使API在今后更容易扩展.新的API 在类型上不兼容先前的API,所以,需要重写以前的应用程序才能使新的API发挥作用. 新增的API 和旧的API 之间,有下面几个明显的区别. 新的API 倾向于使用虚类,而不是接口,因为这更容易扩展.例如,可以无需修改

kettle中调用java类

有时需要在kettle调用java类,如:验证.查询或自定义加密等.有时甚至连基本的数据访问都不那么简单,如获取一个存储文件或使用一个数据库连接,某些数据源可能封装在应用程序中,手工使用自定义的java客户端访问是唯一的方法.本文介绍如何在kettle中调用java类.示例代码在这里下载. 注:如果你使用kettle4.0及以上版本,也你也可以使用user defined java class 步骤实现.   Modified Java ScriptValue 步骤 关键要在kettle中使用M

Java 2D API - 1. 基本概念

Java 2D API扩展AWT包,对二维图形.文本及成像功能提供了支持,可用于开发复杂的界面.绘图软件和图像编辑器.Java 2D对象位于用户坐标空间(User coordinate space),当对象呈现在屏幕或打印机,用户空间坐标转换为设备空间坐标(device space coordinate).下面两个类对 Java 2D API十分重要: Graphics Graphics2D Java 2D API提供了如下功能: 为显示设备和打印机等提供了统一的渲染模型: 提供了大量的几何图元