Java進階(三十一) Web服務調用
Java進階(三十一) Web服務調用
前言
有朋友問了一個問題:如何調用已知的音樂服務接口,服務文檔如下:
https://www.evernote.com/shard/s744/sh/c37cd503-68fc-4406-b8f2-5e90095be303/19b67e36aa2ccd19
查看代碼之后,按照以往的服務調用方法實現,結果無法實現。很是費解,求教大師兄之后,問題,迎刃而解,只能說自己需要學習的地方還有很多。
完整代碼如下:
package plan.http.util;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class HttpClientUtil {
public static void main(String[] args) throws Exception {
HttpClientUtil.getByHttpPost();
}
public static String getByHttpPost() throws Exception {
// 1.創建HttpClient對象。(創建默認的httpClient實例.)
CloseableHttpClient httpclient = HttpClients.createDefault();
// 首頁
String indexStr = "http://music-download.dev.fotoable.net/musics/lists";
// 搜索
String searchStr = "http://music-download.dev.fotoable.net/public/search";
// 2.創建請求方法的實例,并指定請求URL。如果需要發送GET請求,創建HttpGet對象;如果需要發送POST請求,創建HttpPost對象。(創建httppost)
HttpPost httppost = new HttpPost(searchStr);
List
// 3.如果需要發送請求參數,可調用HttpGet、HttpPost共同的setParams(HetpParams params)方法來添加請求參數;
// 對于HttpPost對象而言,也可調用setEntity(HttpEntity entity)方法來設置請求參數。
// 關鍵詞搜索傳參(創建參數隊列)
formparams.add(new BasicNameValuePair("keyword", "See you again"));
// formparams.add(new BasicNameValuePair("pwd", "123"));
UrlEncodedFormEntity uefEntity;
try {
uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
httppost.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0");
httppost.setHeader("Connection", "keep-alive");
httppost.setHeader("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
httppost.setHeader("Accept-Encoding", "gzip, deflate");
httppost.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
httppost.setHeader("JSESSIONID","536020F424630F22DB1F4EAEAD8E83BD");
httppost.setEntity(uefEntity);
System.out.println("executing request " + httppost.getURI());
// 4.調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse。
CloseableHttpResponse response = httpclient.execute(httppost);
try {
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println("--------------------------------------");
System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));
System.out.println("--------------------------------------");
}
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 5. 釋放連接。無論執行方法是否成功,都必須釋放連接
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
參考文獻
http://blog.csdn.net/wangpeng047/article/details/19624529
感觸
自己還是應該多多學習才是,遇到了問題不要緊,要懂得回過頭來認真總結,學習。這樣才能不斷進步。
美文美圖
Java web前端
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。