java 调用 C# webapi
最近项目需要 java调用 .net 的webapi。
对于get来说很简单,但是post方法遇到了些问题,最后也是曲线救国。
先看代码
Java 代码
public static void main(String[] args) throws Exception {
//DoGet(String url)
String resultGet = DoGet("http://localhost:14248/api/Report/GetTest?parentid=40");
//DoPost(String url,List<NameValuePair> nvps)
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("parentid", "40"));
String resultPost = DoPost("http://localhost:14248/api/Report/PostTest",nvps);
//DoPost(String url, JSONObject template)
JSONObject template = new JSONObject();
template.put("data",data);
String json=HttpWebapi.DoPost(urlString,template);
//DoPost(String url, String json)
SysUser user=new SysUser();
user.setAccount(etAccount.getText().toString());
user.setPassword(etPwd.getText().toString());
ApiRequest<SysUser> request=new ApiRequest<>();
request.setData(user);
String data=JsonConvert.toJSON(request);
String json = HttpWebapi.DoPost(AppConfig.getUrl() + "api/user/login", data);
}
public static String DoGet(String url) throws Exception {
HttpGet httpGet = new HttpGet(url);
HttpClient client = new DefaultHttpClient();
HttpResponse resp = client.execute(httpGet);
HttpEntity he = resp.getEntity();
String respContent = EntityUtils.toString(he, "UTF-8");
return respContent;
}
public static String DoPost(String url,List<NameValuePair> nvps) throws Exception {
HttpPost httpost = new HttpPost(url);
HttpClient client = new DefaultHttpClient();
httpost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
HttpResponse resp = client.execute(httpost);
HttpEntity he = resp.getEntity();
String respContent = EntityUtils.toString(he, "UTF-8");
return respContent;
}
public static String DoPost(String url, JSONObject template)throws Exception{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
httpPost.setEntity(new StringEntity(template.toString(),"utf-8"));
HttpResponse resp = httpClient.execute(httpPost);
String respContent = EntityUtils.toString(resp.getEntity(), "UTF-8");
return respContent;
}
public static String DoPost(String url, String json) throws Exception{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
httpPost.setEntity(new StringEntity(json,"utf-8"));
HttpResponse resp = httpClient.execute(httpPost);
String respContent = EntityUtils.toString(resp.getEntity(), "UTF-8");
return respContent;
}
C# WebApi
//public static String DoGet(String url)
[HttpGet]
public dynamic GetTest(int parentId)
{
APIResult<dynamic> result = new APIResult<dynamic>();
result.Data = report.Get_SanJu_ReportSiteCount(parentId);
result.ResponseResult = true;
result.ResponseMsg = "success";
result.ResponseCode = HttpStatusCode.OK; return result;
} //public static String DoPost(String url, List<NameValuePair> nvps)
[HttpPost]
public dynamic PostTest()
{
//通过[FormBody]并不能从方法参数上获得parentId,所以直接从 Request.Form获取
int parentId = int.Parse(HttpContext.Current.Request.Form["parentId"]);
APIResult<dynamic> result = new APIResult<dynamic>();
result.Data = report.Get_SanJu_ReportDesulphurizationTypeByParentId(parentId);
result.ResponseResult = true;
result.ResponseMsg = "success";
result.ResponseCode = HttpStatusCode.OK; return result;
}
Java WebApi
//public static String DoPost(String url, JSONObject template) @Data
public class ApiRequest<T> {
private T data;
private Integer pageIndex = 1;
private Integer pageSize;
} @RequestMapping(value = "test", method = RequestMethod.POST)
public ApiResult<String> test(String test, @RequestBody ApiRequest<String> requestVo) {
ApiResult<String> r = new ApiResult<String>(); r.setData(requestVo.getData());
r.setCodeToSuccessed();
return r;
}
//public static String DoPost(String url, String json) @RequestMapping(value = "login", method = RequestMethod.POST)
public ApiResult<SysUser> login(@RequestBody ApiRequest<SysUser> requestVo) {
ApiResult<SysUser> r = new ApiResult<SysUser>();
SysUser entity = requestVo.getData();
String source = requestVo.getSource();
String platformUUID = entity.getPlatformUUID();
SysUser u = service.getByAccount(entity.getAccount());
// 验证登录成功
if (u != null && u.getPassword().equals(MD5.md5(entity.getPassword()))) {
if(u.getIsValid()==1){
u.setPassword("");//把密码设置为空
r.setData(u);
r.setCodeToSuccessed();
}else {
r.setMessage("The account has been locked!");
}
}else{
r.setMessage("Account or password invalid!");
} return r;
}
java 调用 C# webapi的更多相关文章
- java调用百度地图API依据地理位置中文获取经纬度
百度地图api提供了非常多地图相关的免费接口,有利于地理位置相关的开发,百度地图api首页:http://developer.baidu.com/map/. 博主使用过依据地理依据地理位置中文获取经纬 ...
- JAVA调用 keytool 生成keystore 和 cer 证书
keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...
- java调用mysql服务做备份与恢复
首先添加mysql的bin到环境变量,这样可以简写部分命令,并且做到不依赖系统mysql的具体安装路径. 重启计算机可以让添加的环境变量在java代码中调用时生效.(cmd中生效但java中调用没有生 ...
- 存储过程详解与java调用(转)
存储过程的一些基本语法: --------------创建存储过程----------------- CREATE PROC [ EDURE ] procedure_name [ ; number ] ...
- 调用DiscuzNT webApi 注册 登录 发帖
注册.登录Discuz论坛比较简单,网上很多教程. 3.发帖出现的问题 1.iis8.0版本 asp.net 4.0 不能发帖 将discuz 的web.config文件里的 此代码 <htt ...
- c++ c# java 调用 c++ 写的dll
1. vs 中新建win32 dll 项目 testdll 添加实现文件 test.cpp #include "stdafx.h" #include <ios ...
- Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
- 【转】java调用webservice
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...
- 分享:写了一个 java 调用 C语言 开发的动态库的范例
分享:写了一个 java 调用 C语言 开发的动态库的范例 cfunction.h 代码#pragma once#ifdef __cplusplusextern "C" {#e ...
随机推荐
- python3 raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403: Forbid
1.分析: 如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信 ...
- 初识 ServiceWorker
初识ServiceWorker 初识ServiceWorker 在8月份的时候.W3C更新了一个叫Service Workers的API. 了解过HTML5中的Web Worker的人可能会对这个AP ...
- 1.4《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——编辑命令
在编辑模式中,命令行包括几个重复之前命令的功能.这些以及其他很多命令功能时常设计键盘上的特殊键,所以给出Table 1作为参考,给出了许多键在典型的Macintosh键盘上的标记符号.若你的键盘不太一 ...
- golang channel 源码剖析
channel 在 golang 中是一个非常重要的特性,它为我们提供了一个并发模型.对比锁,通过 chan 在多个 goroutine 之间完成数据交互,可以让代码更简洁.更容易实现.更不容易出错. ...
- 20155227《网络对抗》Exp6 信息收集与漏洞扫描
20155227<网络对抗>Exp6 信息收集与漏洞扫描 实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 基础问题回答 哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府 ...
- 20155301 Exp7 网络欺诈防范
20155301 Exp7 网络欺诈防范 1.基础问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 (2)在日常生活工作中如何防范以上两攻击方法 2.实践过程记录 简单应用SET工具建立 ...
- Vue.js动态组件
动态组件: 1.定义: 几个组件放在同一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示. 2.动态切换原理: 在挂载点使用<component>标签,然后使用v-bind ...
- RxJS v6 学习指南
为什么要使用 RxJS RxJS 是一套处理异步编程的 API,那么我将从异步讲起. 前端编程中的异步有:事件(event).AJAX.动画(animation).定时器(timer). 异步常见的问 ...
- Vue重载组件....
v-if配合Vue.nextTick()销毁当前组件后,重新加载...
- Runtime.getRuntime().addShutdownHook(Thread thread) 程序关闭时钩子,优雅退出程序
根据 Java API, 所谓 shutdown hook 就是已经初始化但尚未开始执行的线程对象.在Runtime 注册后,如果JVM要停止前,这些 shutdown hook 便开始执行.也就是在 ...