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