使用WebClient调用第三方接口
需要调用一个第三方接口,传参返回数据
本来是很简单的一个需求,搞了一天没整好
首先在POSTMAN中测试没有问题,但是使用jquery ajax在前台就会涉及到跨域
虽然设置了 无论怎么写都会报错
Cross-Origin Read Blocking (CORB) blocked cross-origin response https://xxxxxxxxxxxxxxx/xxxxx?
callback=jQuery203024259184329991657_1533652268651&appkey=xxxxxx×tamp=1533651720
&auth=xxxxxxxxxxxxxxxxx&image_url=http%3A%2F%2Fpic18.nipic.com%2F20120204%2F9114602_104351504000_2.jpg
&_=1533652268652 with MIME type application/json.
See https://www.chromestatus.com/feature/5629709824032768 for more details.
上网查了一下好像是要设置content-type,但是改了也没有用。
又查了资料好像是没有跨域权限,需要服务端设置Access-Control-Allow-Headers才可以,但是我是调用方没法修改服务端配置
无奈只好在后台实现
下面是我的代码
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string appkey = "myappkey";
string appsecret ="myappsecret";
string timestamp = GetTimestamp().ToString();
string image_url = "http://pic18.nipic.com/20120204/9114602_104351504000_2.jpg";
string auth = GetMD5(appkey + "+" + timestamp + "+" + appsecret);
string postData = "appkey="+appkey+"×tamp=" + timestamp + "&auth=" + auth.ToLower() + "&image_url=" + image_url;
byte[] bytes = Encoding.UTF8.GetBytes(postData);
WebClient wc = new WebClient();
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
wc.Headers.Add("ContentLength", postData.Length.ToString());
Encoding enc = Encoding.GetEncoding("UTF-8");
byte[] responseData = wc.UploadData("apiurl", "POST", bytes);
string response = enc.GetString(responseData);
context.Response.Write(response);
}
public string GetMD5(string myString)
{
byte[] result = Encoding.Default.GetBytes(myString);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(result);
return BitConverter.ToString(output).Replace("-", "");
}
public long GetTimestamp()
{
TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(, , );
return (long)ts.TotalSeconds;
}
虽然把问题解决了,但是怎么在客户端调用,还是没弄明白,自己理解的也不一定对。
如有前辈可以指点一下感激不尽。
使用WebClient调用第三方接口的更多相关文章
- Java调用第三方接口示范
在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 使用流程[1]准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的res ...
- java springboot调用第三方接口 借助hutoool工具类 爬坑
楼主是个后端小白一枚,之前没接触过后端,只学了java基本语法,还是在学校老师教的,学的很浅,什么ssh.ssm框架都没有学,最近在自学spring boot,看书学也看不是很懂,就在b站上看教学视频 ...
- SpringMVC 结合HttpClient调用第三方接口实现
使用HttpClient 依赖jar包 1:commons-httpclient-3.0.jar 2:commons-logging-1.1.1.jar 3:commons-codec-1.6.jar ...
- Java调用第三方接口工具类(json、form)
1.JSON值访问 /** * 调用对方接口方法 * @param path 对方或第三方提供的路径 * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析 ...
- 使用HttpClient调用第三方接口
最近项目中需要调用第三方的Http接口,这里我用到了HttpClient. 首先我们要搞明白第三方接口中需要我们传递哪些参数.数据,搞明白参数以后我们就可以使用HttpClient调用接口了. 1.调 ...
- php 自己封装一个调用第三方接口的函数
①在php.ini中开启php_curl扩展(必须开启) ②建议在php.ini中开启php_openssl扩展(本身不是curl必须的,是调用一些第三方接口需要的 ③如果以上操作重启apache后, ...
- java代码调用第三方接口
一.利用httpclient来字符串参数(url是第三方接口,不带参数,如:http://192.168.16.200:8081/faceInfo/list,param是url后面所要带的参数) pu ...
- 输入网址调用第三方接口获取结果_java
最近公司给了一个第三方服务的网址,要我调用后返回需要用到的信息 具体网址:http://www.xxxx.com/xxx-api/xxxx/getXxxByUserId?userId=" + ...
- vue 调用第三方接口配置
1.配置proxyTable 3.调用接口,将接口地址替换为配置的‘/api’
随机推荐
- ssh方式请求gitlab需要密码解决方法
问题:gitlab是使用docker安装的,配置好公钥私钥后,请求gitlab一直需要输入密码,而且这个密码输入什么都不对. 原因:后来发现是因为docker做了端口映射,如使用宿主机的10022映射 ...
- 二、初步认识springBoot的pom.xml
1. 大体结构 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- [UE4]计算两点距离
(Vector-Vector).VectorLength (Vector_End- Vector_Start ).Normalize,获取从起始位置指向目标位置的单位向量.
- TCP的概念
中间节点.虚电路.失败重传 UDP:不可靠传输,并不承诺提供可靠的连接通道,所传送包完全可能失序.重复甚至丢失. TCP:端口号.三次握手建立可靠连接(第一次确认A端发送和B端接收能力,第二次确认A端 ...
- source Insight 添加python 工程
1. 下载python的识别文件 Python.CLF 2.设置
- jumpservice使用465端口发送邮件
阿里云.华为云等云服务器默认屏蔽掉了25端口后,内网服务器如何通过跳板机发送邮件到外网邮箱. 如果是可联网的阿里云机器,可以直接配置mailx使用465端口发送邮件.需要进行ssl验证配置. Cent ...
- let const区别!
这次做项目在申明变量的时候用到let const 总结下这两个区别 : 首先 let与const都是只在声明所在的块级作用域内有效. let声明的变量可以改变,值和类型都可以改变,没有限制.const ...
- Tesseract训练
最近在用Tesseract做一个图片识别的小应用,目标图像只有数字和英文字母,在实际使用过程中发现个别数识别错误,因此不得不研究学习Tesseract的训练. http://www.cnblogs.c ...
- POJ3094 Quicksum
POJ3094 Quicksum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18517 Accepted: 1271 ...
- Webdriver+Testng实现测试用例失败自动截图功能
testng执行测试用例的时候,如果用例执行失败会自动截图,方便后续排查问题 1.首先定义一个截图类: package com.rrx.utils; import java.io.File;impor ...