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 ...
随机推荐
- Win7系统的任务管理器显示不全
Win7系统的任务管理器显示不全:如下图所示 首先要说明的是:出现这种现象是正常的,因为这种样式是任务管理器的精简模式. 还原方法:双击任务管理器四周的空白边框,即可恢复初始模式. 效果图如下:
- Android String.xml中的符号总结
<b></b>加粗字体 <i></i> 斜体字体 <u></u> 给字体加下划线 \n 换行 \u0020表示空格 \u2026 ...
- Linux SSH远程文件/文件夹传输命令scp
相信各位VPSer在使用VPS时会常常在不同VPS间互相备份数据或者转移数据,大部分情况下VPS上都已经安装了Nginx或者类似的web server,直接将要传输的文件放到web server的文件 ...
- java的myeclipse,java页面改动默认的javadoc方法
在项目中右键点击新建class文件,在弹出的框中选择"here" 勾上enable project specific settings 选择comments中的types然后点击e ...
- MSF里MS17_010利用模块笔记
1. auxiliary/scanner/smb/smb_ms17_010 //扫描检测漏洞辅助模块 扫描结果这里可以看到 2,3,4这几台主机存在此漏洞! 2. auxilia ...
- 20155338《网络对抗》Exp8 Web基础
20155338<网络对抗>Exp8 Web基础 实验内容 Web前端:HTML 使用netstat -aptn查看80端口是否被占用,如果被占用了就kill 原进程号,我的没有被占用. ...
- github协同开发
看官请移步GitHub团队项目合作流程 本文是上述链接的截图,担心哪天作者不小心删除了,备一份在自己这里,仅为自己看着方便.侵权请告知
- Maven构建项目速度太慢的解决办法
问题描述 通过idea新建maven项目,参数设置好后,idea自动构建maven项目时,速度很慢. 参数设置如图: 执行时间如下图: Total time为8:49,花了将近十分钟时间. 连续尝试了 ...
- spring boot 实现文件下载
html 代码 js部分 window.location.href= this.Baseurl+'/plan/down?file='+filename; spring boot 后台代码@GetMap ...
- 【开源.NET】 轻量级内容管理框架Grissom.CMS(第二篇前后端交互数据结构分析)
这是 CMS 框架系列文章的第二篇,第一篇开源了该框架的代码和简要介绍了框架的目的.作用和思想,这篇主要解析如何把sql 转成标准 xml 配置文件和把前端post的增删改数据规范成方便后台解析的结构 ...