java調用webAPI(C#)的實例

1、需要的包:httpcomponents-client-4.3.1-bin(下圖)

   

2、代碼調用

package MainPackage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
public class MainClass {
public static void main(String[] args)  throws Exception{
//WebServicesUsed();
NotAuthTestPost();
String xmlget =get("http://localhost:1445/api/UserAccount");////自己本地的(調用接口方法)URL地址
System.out.print(xmlget);
}

//授權驗證
private static void NotAuthTestPost() throws IOException {
Map<String, String> params = new HashMap<String, String>();  
params.put("client_id", "123456"); //ID
params.put("client_secret", "abcdef");  //密碼
params.put("grant_type", "client_credentials");//授權類型
String xml =post_method( params); 
System.out.print(xml);
}

private static String post_method(Map<String, String> params )
{
DefaultHttpClient httpclient = new DefaultHttpClient();  
String body = null; 
HttpPost post = postForm(params);  
body = invoke(httpclient, post);  
httpclient.getConnectionManager().shutdown();  
return body;  
}


private static HttpPost postForm(Map<String, String> params){  
HttpPost httpost = new HttpPost("http://localhost:11625/OAuth/Token");  //自己本地的(授權)URL地址
List<NameValuePair> nvps = new ArrayList <NameValuePair>();  
Set<String> keySet = params.keySet();  
for(String key : keySet) {  
nvps.add(new BasicNameValuePair(key, params.get(key)));  
}  
try {  
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));  
} catch (UnsupportedEncodingException e) {  
e.printStackTrace();  
}  
return httpost;  
}

private static String invoke(DefaultHttpClient httpclient,HttpUriRequest httpost) {  
HttpResponse response = sendRequest(httpclient, httpost);  
String body = paseResponse(response);  
return body;  
}  


private static HttpResponse sendRequest(DefaultHttpClient httpclient,    HttpUriRequest httpost) {  
HttpResponse response = null;  
try {  
response = httpclient.execute(httpost);  
} catch (ClientProtocolException e) {  
e.printStackTrace();  
} catch (IOException e) {  
e.printStackTrace();  
}  
return response;  
}  


private static String paseResponse(HttpResponse response) {  
HttpEntity entity = response.getEntity();  
String charset = EntityUtils.getContentCharSet(entity);  
String body = null;  
try {
body = EntityUtils.toString(entity);
} catch (ParseException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}  
return body;  
}  


//獲取返回值驗證
public static String get(String url) {  
DefaultHttpClient httpclient = new DefaultHttpClient();  
String body = null;  
HttpGet get = new HttpGet(url);  
//Authorization:http驗證的頭,第二個參數:token類型+空格+連接令牌(我們用這個"access_token")
get.setHeader("Authorization", "Bearer " + "Rp_H4RaozPWO2JMZv4Y1r7McVlWPSZ30thmCvD_eLPHOoIsRfxjgDy_OCwy5sgN7R7fc1XXde3qviFC8gBC2NCPDvgNsXTY9BRdVOs0nJIUbcpCMEVwSc2p7I0uAbzmBph0z2oGYKB2EVwqHttXlZ7l-ah_Z4zu7QxuJFCa-UtyMSZNLiLlSsatD6C4oxBxpcfUKpDKJZcvHZOeoEAADK0nhhqj-Qf71qArYr-Y-Z_7-bsz4");
body = invoke(httpclient, get);
httpclient.getConnectionManager().shutdown();  
return body;  
}  
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章