使用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’
随机推荐
- UITableView自定义Cell中,纯代码编程动态获取高度
在UITableView获取高度的代理方法中,经常需要根据实际的模型重新计算每个Cell的高度.直接的做法是在该代理方法中,直接根据模型来返回行高:另 [1]-(CGFloat)tableView:( ...
- SSO+PHS 同步问题修正解决
参照URL: https://blogs.technet.microsoft.com/latam/2018/03/27/using-the-consistencyguid/ https://chinn ...
- 视频流PS,PS封装H264
出处: ISOIEC 13818-1 PS流: PS流由PSGOP组成,每个PSGOP是由I帧起始的多帧集合,每个GOP之间没有相互依赖信息,可以剪切拼接. | PSGOP0 | PSGOP1 | P ...
- selenium 添加动态隧道代理
# 无须密码验证方法 chromeOptions = webdriver.ChromeOptions() chromeOptions.add_argument('--proxy-server=http ...
- python 中增加css样式的三种方式
增加css样式的三种方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- idea properties文件中文无法正常显示
引用:https://blog.csdn.net/u010999809/article/details/81204457 问题:在idea打开配置文件,已经设置了全局编码格式为UTF-8,和项目编码格 ...
- DCDC电源 TPS54525
电路图: 输入电压12V,输出电压5V.不接负载可以获得5V输出,接入负载后只有4mV,且PG为低. 预计原因:可能是上电瞬间电流过大,芯片过流保护. 解决方案:SS软启动引脚的电容C331加大至1u ...
- TestNG实现日志输出
这里介绍的是TestNG中的Report类来实现简单的log输出这个很简单直接看例子吧 package com.rrx.test; import java.io.IOException; import ...
- python向config、ini文件读取写入
config读取操作 cf = configparser.ConfigParser() # 实例化对象 cf.read(filename) # 读取文件 cf.sections() # 读取secti ...
- wechat-plus 使用node开发微信公众号
github:https://github.com/liuyinglong/node-wechatnpm:https://www.npmjs.com/package/wechat-plus insta ...