Web後端語言模擬http請求(帶使用者名稱和密碼)例項程式碼大全
阿新 • • 發佈:2018-12-31
RESTful API是目前比較成熟的一套網際網路應用程式的API設計理論。而隨著RESTful API的成熟和流行,應用開發方面就需要以模擬http請求的方式來呼叫RESTful API介面;經過一段時間的IBM的雲平臺Blumemix的學習及語言翻譯服務的應用,積累了Java、ASP.NET、Nodejs、Go、PHP、Python、Ruby等語言呼叫Rest API的方法,這裡整理到一起,和大家分享一下。
Java
Java這方面的Jar包應該比較多,比如HttpClient,我這裡使用最基本的:
相關例項:Java中REST API使用示例——基於雲平臺+雲服務打造自己的線上翻譯工具//認證資訊物件,用於包含訪問翻譯服務的使用者名稱和密碼 Authenticator auth = new MyAuthenticator("使用者名稱", "密碼"); Authenticator.setDefault(auth); // 開啟和URL之間的連線 HttpsURLConnection connection = (HttpsURLConnection)realUrl.openConnection(); connection.setDoInput(true); connection.setDoOutput(true);//允許連線提交資訊 connection.setRequestMethod("GET"); // 建立實際的連線 connection.connect();
ASP.NET
ASP.NET中使用System.Net.Http.HttpClient類來實現API呼叫:
System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient(); //將服務憑證轉換為Base64編碼格式 byte[] auth = Encoding.UTF8.GetBytes("使用者名稱:密碼"); String auth64 = Convert.ToBase64String(auth); //建立並指定服務憑證,認證方案為Basic httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", auth64); retString = await httpClient.GetStringAsync(uri);
PHP
php中使用大名鼎鼎的CURL來實現API呼叫:
相關例項:IBM的雲平臺Bluemix使用初體驗——建立PHP Web 應用程式,新增並使用語言翻譯服務$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //https請求必須設定以下兩項 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //設定憑證 curl_setopt($ch, CURLOPT_USERPWD, '您的使用者名稱:您的密碼'); //執行請求 $output = curl_exec($ch);
Python
Python中使用標準庫urllib2來實現API呼叫
passman = urllib2.HTTPPasswordMgrWithDefaultRealm() #建立域驗證物件
passman.add_password(None, surl, "翻譯服務使用者名稱", "密碼") #設定域地址,使用者名稱及密碼
auth_handler = urllib2.HTTPBasicAuthHandler(passman) #生成處理與遠端主機的身份驗證的處理程式
opener = urllib2.build_opener(auth_handler) #返回一個openerDirector例項
urllib2.install_opener(opener) #安裝一個openerDirector例項作為預設的開啟者。
response = urllib2.urlopen(surl) #開啟URL連結,返回Response物件
resContent = response.read() #讀取響應內容
相關例項:Python Web中REST API使用示例——基於雲平臺+雲服務打造自己的線上翻譯工具
Ruby
Ruby使用Net::HTTP類來實現API呼叫
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(uri.request_uri)
request.basic_auth "使用者名稱", "密碼"
response = http.request(request)
Go
Go語言使用net/http包來實現API呼叫,它有個好處是我們可以直接把使用者名稱和密碼寫在Url中
url = "https://使用者名稱:密碼@gateway.watsonplatform.net/language-translation/api/v2/translate?";
resp, err := http.Get(url) //改送HTTP Get請求
if err != nil {
fmt.Fprintf(w, err.Error())
return
}
if resp != nil && resp.Body != nil {
defer resp.Body.Close()
}
if resp.StatusCode != http.StatusOK {
fmt.Fprintf(w, errors.New(resp.Status).Error())
return
}
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Fprintf(w, err.Error())
return
}
相關例項:IBM的雲平臺Bluemix使用初體驗——建立Go語言 Web 應用程式,新增並使用語言翻譯服務Nodejs
Nodejs使用https包來實現API呼叫
//模擬HTTP Get請求 http.get("https://翻譯服務使用者名稱:密碼@gateway.watsonplatform.net/language-translation/api/v2/translate?" + data, function(gres) {
var body = '';
gres.on('data',function(d){
body += d;
}).on('end', function(){
//console.log(gres.headers);
//console.log(body);
//輸出響應內容
res.send("{\"text\":\"" + body + "\"}");
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});