由于项目需要,做的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. AngularJS 后台交互

    我们可以使用内置的$http服务直接同外部进行通信.$http服务只是简单的封装了浏览器原生的XMLHttpRequest对象. 1.链式调用 $http服务是只能接受一个参数的函数,这个参数是一个对 ...

  2. phpMyAdmin的配置

    好久没写东西了,上来记录一下今天学的一点小东西吧~ 之前搞php开发的时候,一直用的是SQLyog来操作mysql数据库的,但是今天发现sqlyog功能不是很完善,主要是我想修改数据库名,但是sqly ...

  3. java的print,printf,println以及输入

    java中有三种方式向控制台输入信息,分别是print,printf,println,现在简单介绍一下他们之间的异同. printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 pr ...

  4. Python3基础 访问列表 小于指定索引值的所有元素

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  5. Oculus中OVRPlayerController飞行视角的制作

    最近项目上的事,忙的不可开交.忙里偷闲,记录下Oculus飞行视角的制作 师兄给我的要求是,带上Oculus,通过remote和头盔操作,可以完成飞行我的解决办法:1.消除重力的影响,如同在真空中,就 ...

  6. 【leetcode❤python】 278. First Bad Version

    #-*- coding: UTF-8 -*-# The isBadVersion API is already defined for you.# @param version, an integer ...

  7. s5pv210 cpu运行debian

    1.环境准备 sudo apt-get install binfmt-support qemu qemu-user-static debootstrap 2.获取debian根文件系统 2.1.cd ...

  8. 子坐标系C在父坐标系W中的旋转问题

    关键词:空间旋转.旋转轴.刚体旋转 用途:相机位姿估计.无人机位姿估计 文章类型:概念.公式总结(本文不带推倒过程,若想了解公式是如何推出来的请自习搜索文献),C++函数展示 @Author:VSha ...

  9. JFinal 的初始化

    浅析初始化过程 首先要从 web 容器进行初始化 <?xml version="1.0" encoding="UTF-8"?> <web-ap ...

  10. T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

    -- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ParamType_V2_0 where Type_Id=316-- ...