1. 程式人生 > >Web後端語言模擬http請求(帶使用者名稱和密碼)例項程式碼大全

Web後端語言模擬http請求(帶使用者名稱和密碼)例項程式碼大全

RESTful API是目前比較成熟的一套網際網路應用程式的API設計理論。而隨著RESTful API的成熟和流行,應用開發方面就需要以模擬http請求的方式來呼叫RESTful API介面;經過一段時間的IBM的雲平臺Blumemix的學習及語言翻譯服務的應用,積累了Java、ASP.NET、Nodejs、Go、PHP、Python、Ruby等語言呼叫Rest API的方法,這裡整理到一起,和大家分享一下。

Java

Java這方面的Jar包應該比較多,比如HttpClient,我這裡使用最基本的:

//認證資訊物件,用於包含訪問翻譯服務的使用者名稱和密碼  
            Authenticator auth = new MyAuthenticator("使用者名稱", "密碼");  
            Authenticator.setDefault(auth);  
              
            // 開啟和URL之間的連線  
            HttpsURLConnection connection = (HttpsURLConnection)realUrl.openConnection();  
            connection.setDoInput(true);    
            connection.setDoOutput(true);//允許連線提交資訊         
            connection.setRequestMethod("GET");  
              
            // 建立實際的連線  
            connection.connect();  
相關例項:Java中REST API使用示例——基於雲平臺+雲服務打造自己的線上翻譯工具

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呼叫:

$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); 
相關例項:IBM的雲平臺Bluemix使用初體驗——建立PHP Web 應用程式,新增並使用語言翻譯服務

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);   
});