使用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(1970, 1, 1); return (long)ts.TotalSeconds; }
雖然把問題解決了,但是怎麼在客戶端呼叫,還是沒弄明白,自己理解的也不一定對。
如有前輩可以指點一下感激不盡。
相關推薦
使用WebClient呼叫第三方介面
需要呼叫一個第三方介面,傳參返回資料 本來是很簡單的一個需求,搞了一天沒整好 首先在POSTMAN中測試沒有問題,但是使用jquery ajax在前臺就會涉及到跨域 雖然設定了 無論怎麼寫都會報錯 Cross-Origin Read Blocking (CORB) blocked cross-origin
java使用httpclient呼叫第三方介面
java使用httpclient呼叫第三方介面 HttpClientUtil工具類 package com.fz.util; import java.io.File; import java.net.URL; import java.util.ArrayList; im
呼叫第三方介面獲取資料寫入資料庫
系統框架:springboot(和框架沒有什麼太大關係,僅記錄一下) 呼叫路徑:controller→service 第三方介面:http://xx.xxx.com:9905/api/list?transtime=20181017105600&token=abcdefghijklmn
原生feign呼叫第三方介面
最近做一個小專案,小到只有一個頁面,和幾個介面而已。 因為專案是自己一個人在做,所以所有的定義都可以自己做主。 專案的目的是為了推送給第三方頁面收集到的資料,所以對接是重頭戲。 之前對接過各種第三方簡訊介面,用的無非是httpClient的get/post,用多了就想換一個技術熟悉一下。
http協議呼叫第三方介面(post get方法)
public class PostUtil { private static CloseableHttpClient httpClient; static { PoolingHttpClientConnectionManager cm = n
http 簡單呼叫第三方介面
僅做記錄,注意post請求亂碼問題~~ maven依賴: <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</a
簡單呼叫第三方介面的案例程式碼
<?php require "conn.php"; header("Access-Control-Allow-Origin:*");//允許任何訪問(包括); header("Content-Type:Content-Type:text/html;charset=u
採用HttpURLConnection方式呼叫第三方介面,介面的返回值經過unicode編碼處理
在介面的呼叫過程中,第三方介面的返回值使用unicode處理了,呼叫過程中一直報錯 改成下面這樣就可以了 public class TestStatic { public static void main(String[] args) throws Exception {
Java呼叫第三方介面通過手機號碼查詢運營商和歸屬地
import com.alibaba.fastjson.JSONObject; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; impo
Python呼叫第三方介面實現nagios簡訊報警
公司有需求,需要簡訊報警,所以才有瞭如下的東西。 第三方:smsbao.com 收費是1分錢一條,買的多當然就更便宜,我們買的是700元/10000條。 缺點: 1、傳送內容只能有70位元組,超過了就會拆分成多條簡訊。所以得對傳送內容進行優化。 2、傳送資訊的號碼
C#呼叫第三方介面!!!!急急急
//使用 XmlTextReader 物件,建立和格式化 WSDL 文件 XmlTextReader reader = new XmlTextReader(url + "?wsdl");
呼叫第三方介面~支付寶
你是大神,就別看了,浪費時間。這次遇到 對接支付寶支付,真的很難受。 大家都說簡單,確實! 到最後,一大神幫我寫了,就幾行程式碼 【捂臉】 ,呵呵了~ 這幾天都睡不好,本來專案說不用接支付的,到後來要了,無語!廢話不多說,開始吧!----------------------
springboot整合RestTemplate呼叫第三方介面
一、首先需要編寫一個RestTemplate配置類,放在入口類所在包或者其子包下: import org.springframework.context.annotation.Bean; import org.springframework.context.anno
第三方介面呼叫案例(以阿里雲簡訊服務為例)
第三方介面或者服務大部分都是以rest風格的,需要http請求去呼叫,通過網路傳送請求去呼叫,然後等待第三方服務的響應,併發量多的話,會嚴重拖慢業務邏輯的處理速度。為了提高系統的效能,呼叫第三方服務,最好做成非同步的,如果條件允許,最好用單獨的伺服器,或者幾臺伺服器來做呼叫第三方介面,來提高業務邏輯
呼叫微信和支付寶第三方介面方法總結
<span style="white-space:pre"> </span> //判斷證書 if (resHandler.getParameter("sign").equals( WeixinSignUtil.
java呼叫webservice 第三方介面
Web Service技術, 能使得執行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換資料或整合。依據Web Service規範實施的應用之間, 無論它們所使用的語言、 平臺或內部協議是什麼, 都可以相
呼叫第三方dll中的com介面
建立win32 app工程 1.h檔案 #pragma once #include "atlcomcli.h" #import "./xdll.dll" no_namespace named_guids raw_interfaces_only //載入dll 2.c
前端第三方介面呼叫
獲取使用者ip:http://chaxun.1616.net/s.php?type=ip&output=json&callback=jQuery11130105805044493974
SpringBoot呼叫第三方IP查詢介面(Https)
一:需求簡介. 1.1專案中天新增IP歸屬地查詢功能,前後端分離.後端返回給前端json字串. 1.2使用阿里雲免費的IP歸屬地查詢介面.官網一下不太好找.下面圖解演示一下,儘量節省時間吧
呼叫國內著名網站的第三方呼叫API介面地址
https://github.com/jokermonn/-Api 來,大兄弟 拿走不謝,現在我都不想在群裡分享了 https://www.v2ex.com/api/nodes/show.json?