关于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 = "";
//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 = ;
myReq.Method = "post";
myReq.ContentType = "application /x-www-form-urlencoded"; //填充POST数据
myReq.ContentLength = bytesRequestData.Length;
Stream requestStream = myReq.GetRequestStream();
requestStream.Write(bytesRequestData, , 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的几个问题的更多相关文章
- Java调用WeChat's API总结
微信公众号结合着内置浏览器,有着普通浏览器无法完成的服务,前者可以获取浏览页面的微信用户的信息,从而根据信息为用户提供基于微信的更多服务:而后者仅仅能够浏览页面,通过用户的输入信息与用户互动. 本人根 ...
- 程序员的长安十二时辰:Java实现从Google oauth2.0认证调用谷歌内部api
最近公司在做一个app购买的功能,主要思路就是客户在app上购买套餐以后,Google自动推送消息到Java后端,然后Java后端通过订单的token获取订单信息,保存到数据库. Java后端要获取订 ...
- Java后端API调用身份验证的思考
在如今信息泛滥的数字时代中对产品安全性的要求越来越高了,就比如说今天要讨论的Java后端API调用的安全性,在你提供服务的接口中一定要保证调用方身份的有效性和合法性,不能让非法的用户进行调用,避免数据 ...
- JAVA客户端API调用memcached两种方式
1. memcached client for java客户端API:memcached client for java 引入jar包:java-memcached-2.6.2.jar package ...
- 淘宝JAVA中间件Diamond详解之简介&快速使用 管理持久配置的系统
http://my.oschina.net/u/435621/blog/270483?p=1 淘宝JAVA中间件Diamond详解(一)---简介&快速使用 大家好,今天开始为大家带来我们通用 ...
- 淘宝JAVA中间件Diamond
以下是转载自网上资料,但是根据步骤可以搭建出diamond配置中心服务器. 项目中需要用到diamond的理由是, 项目中使用了很多定时任务和异步任务.而且这些定时任务和异步任务都是分布式的安排在多个 ...
- 大型网站系统与 Java 中间件实践
http://wanglizhi.github.io/2016/07/27/JavaWeb-And-MiddleWare/ 第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅 ...
- 《大型网站系统与Java中间件实践》读书笔记
分布式系统的基础知识 阿姆达尔定律 多线程交互模式 互不通信,没有交集,各自执行各自的任务和逻辑 基于共享容器(如队列)协同的多线程模式->生产者-消费者->队列 通过事件协同的多线程模式 ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
随机推荐
- 富文本编辑器TInyMCE,本地图片上传(Image Upload)
TinyMCE 官网 (类似:百度的富文本web编辑器UEditor) 第一步 下载 TinyMCE,解压后放入工程,在需要的HTML页面引入tinymce.min.js. 第二步 下载tinyMCE ...
- kafka消费者客户端(0.9.0.1API)
转自:http://orchome.com/203 kafka客户端从kafka集群消费消息(记录).它会透明地处理kafka集群中服务器的故障.它获取集群内数据的分区,也和服务器进行交互,允许消费者 ...
- 判断checkbox是否选中
一种是通过jquery A. $("[name='selectUserId']:checked").each(function () { // $(this).attr(" ...
- echarts在IE8下遮挡其他组件的问题
echarts的图在IE8下会浮在上层遮挡住其他组件,解决方式是页面中引入 <meta http-equiv="X-UA-Compatible" content=" ...
- IE8 jquery解析xml的兼容问题
正常情况下可以这么写: jQuery(node).find(xpath.replace("//", ""))[0]; 但是在IE8下得到的是undefined应 ...
- 常用的logging配置
centos 6.5,python 2.6 习惯封装一个log.py #!/usr/bin/python # -*- coding: UTF-8 -*- import logging from log ...
- Latex环境安装
安装latex环境 sudo apt-get install texlive-full 推荐使用texstudio编辑器,简单方便高效靠谱 sudo apt-get install texstudio ...
- CentOS 7.2.1511编译安装Nginx1.10.1+MySQL5.7.14+PHP7.0.11
准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.se ...
- 通过js给android控件WebView设padding
项目中有个界面是用来显示一个网页的,很简单,放个WebView就ok了,可是返回按钮放在哪 ,ui的设计是在底部显示一个半透明的条,左边有一个返回按钮.这个条显示在内容上面.我有一个担心,就是要是最下 ...
- FastDfs
下载fastdfs源码包: ? 1 wget http://fastdfs.googlecode.com/files/FastDFS_v3.05.tar.gz 开始安装: ? 1 2 3 4 tar ...