由于项目需要,做的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. 工作中总结的常用PHP代码

    [目录] ◆PHP常用的代码 ◆HTML常用代码 [值传递 和 引用传递] [单例模式] [魔术常量] [代码调试(自定义一个简单的debug函数)] [thinkphp多表查询] [获取客户端IP地 ...

  2. IOS 截取图片 部分 并生成新图片

    /** * 从图片中按指定的位置大小截取图片的一部分 * * @param image UIImage image 原始的图片 * @param rect CGRect rect 要截取的区域 * * ...

  3. CSS的应用

    CSS基础入门 目录 一.   列表.................................................................................. ...

  4. esponse.sendRedirect方式的转向与RequestDispatcher的forward方法的比较

    esponse.sendRedirect方式的转向与RequestDispatcher的forward方法的比较 JavaWeb开发中,采用MVC模式的时候,在控制器完成模型的调用之后会选择界面对用户 ...

  5. 关于php留言本网站的搭建

    1.检查php,http服务是否安装 [root@localhost ~]# rpm -qa | grep http httpd-tools--.el7.centos.x86_64 httpd--.e ...

  6. ASP。net 之view

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx.cs&qu ...

  7. oracle应用启动时常会报未知服务名

    修改/etc/hosts文件 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4#::1 loca ...

  8. Jquery页面初始化的4种方式

    <script src="Scripts/jquery-1.8.2.min.js"></script> <script type="text ...

  9. java.lang.InstantiationException-反射机制

    package com.test.classtest; public class test { public static void main(String[] args) throws Except ...

  10. an interview question(3)

    最近看了些C面试题顺便复习一下C语言,现贴一些出来和大家分享. #include <stdio.h> void main () { ,,,,};--------- *(ptr++)+=; ...