由于项目需要,做的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的几个问题的更多相关文章

  1. Java调用WeChat's API总结

    微信公众号结合着内置浏览器,有着普通浏览器无法完成的服务,前者可以获取浏览页面的微信用户的信息,从而根据信息为用户提供基于微信的更多服务:而后者仅仅能够浏览页面,通过用户的输入信息与用户互动. 本人根 ...

  2. 程序员的长安十二时辰:Java实现从Google oauth2.0认证调用谷歌内部api

    最近公司在做一个app购买的功能,主要思路就是客户在app上购买套餐以后,Google自动推送消息到Java后端,然后Java后端通过订单的token获取订单信息,保存到数据库. Java后端要获取订 ...

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

    在如今信息泛滥的数字时代中对产品安全性的要求越来越高了,就比如说今天要讨论的Java后端API调用的安全性,在你提供服务的接口中一定要保证调用方身份的有效性和合法性,不能让非法的用户进行调用,避免数据 ...

  4. JAVA客户端API调用memcached两种方式

    1. memcached client for java客户端API:memcached client for java 引入jar包:java-memcached-2.6.2.jar package ...

  5. 淘宝JAVA中间件Diamond详解之简介&快速使用 管理持久配置的系统

    http://my.oschina.net/u/435621/blog/270483?p=1 淘宝JAVA中间件Diamond详解(一)---简介&快速使用 大家好,今天开始为大家带来我们通用 ...

  6. 淘宝JAVA中间件Diamond

    以下是转载自网上资料,但是根据步骤可以搭建出diamond配置中心服务器. 项目中需要用到diamond的理由是, 项目中使用了很多定时任务和异步任务.而且这些定时任务和异步任务都是分布式的安排在多个 ...

  7. 大型网站系统与 Java 中间件实践

    http://wanglizhi.github.io/2016/07/27/JavaWeb-And-MiddleWare/ 第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅 ...

  8. 《大型网站系统与Java中间件实践》读书笔记

    分布式系统的基础知识 阿姆达尔定律 多线程交互模式 互不通信,没有交集,各自执行各自的任务和逻辑 基于共享容器(如队列)协同的多线程模式->生产者-消费者->队列 通过事件协同的多线程模式 ...

  9. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

随机推荐

  1. Dashborad 上显示出错

    Dashboard 上显示的错误是因为没有选择对应的X-坐标. 上周处理过 一个字段,它是一个Formula 字段,作为Dashboard的 Data Source 前提是报表是得Group by 一 ...

  2. hibernateTools插件安装

    先去官方网站工具页面 http://hibernate.org/tools/ 点击Download 然后出现 你可以选择在线安装 在eclipse里面.help->install->add ...

  3. http常见状态码解析

    自定义 Ajax原生编写ajax:function(opt){ var xmlhttp; //创建对象 if (window.XMLHttpRequest){// code for IE7+, Fir ...

  4. 我理解的webservice是这样的

    本文来自 --迹忆:http://www.onmpw.com/tm/xwzj/network_45.html 最近在工作中遇到这样的一个项目(暂且定为项目A),项目A本身是用PHP开发的,但是其数据是 ...

  5. angularjs $broadcast 和 $on 的使用及其注意事项

    下面是demo: <div ng-controller="ParentCtrl"> www.111cn.net //父级 <div ng-controller=& ...

  6. javascript 组合

    1. 大数组中有m个元素,抽取其中的n个进行组合. var combination = function(arr, num){ var r=[]; (function f(t,a,n) { ) { r ...

  7. 27-React Lists and Keys

    Lists and Keys React支持以数组的形式来渲染多个组件,它会将你数组中的每个组件以列表的形式渲染开来. 当你使用数组的方式来渲染你的组件时,你需要给每个组件一个Key值,否则会出现一个 ...

  8. jquery 设置页面元素不可点击、不可编辑、只读(备忘)

    $("input").attr('readonly', true); $("textarea").attr('readonly', true); $(':rad ...

  9. Linux常用命令及shell脚本

    一.     用户管理(添加用户.切换用户.删除用户) ~                                                                        ...

  10. DOCTYPE声明作用及用法详解

    一.浏览器呈现模式和doctype 有的网页是遵循标准而创作的,但也有很多不是.即使你不能创建遵循标准的网页,也希望浏览器根据标准来正确显示那些页.目前,大量网页充斥着大量非标准代码,它们仍能正常地工 ...