java模擬httppost和httpget遇到的問題
阿新 • • 發佈:2018-12-09
java模擬httppost遇到以下問題:
java.lang.NoClassDefFoundError: org/apache/http/params/SyncBasicHttpParams
仔細研究發現專案中同時引用了httpClient 相關的jar包的 4.1.2 和 4.0.1版本,而SyncBasicHttpParams是從4.1才開始有的。
以下是httpClient下載地址: https://pan.baidu.com/s/1i3Pnd8T
下面是測試程式碼:
package httpPost; 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.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; public class TestH2 { public static void main(String[] args) { String url = "XXXXXX"; String result = null; HttpPost httpRequst = new HttpPost(url); List<NameValuePair> params = new ArrayList<NameValuePair>(); /// HttpParams httpParameters = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParameters, 10 * 1000);// 設定請求超時10秒 HttpConnectionParams.setSoTimeout(httpParameters, 10 * 1000); // 設定等待資料超時10秒 HttpConnectionParams.setSocketBufferSize((HttpParams) params, 8192); HttpClient httpclient = new DefaultHttpClient(httpParameters); // 此時構造DefaultHttpClient時將引數傳入 /// params.add(new BasicNameValuePair("str", "i am post string")); try { httpRequst.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst); if (httpResponse.getStatusLine().getStatusCode() == 200) { HttpEntity httpEntity = httpResponse.getEntity(); result = EntityUtils.toString(httpEntity);// 取出應答字串 } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); result = e.getMessage().toString(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); result = e.getMessage().toString(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); result = e.getMessage().toString(); } System.out.println(result); } }
總結:平常開發過程中一定要仔細一點,這樣才能節約更多的時間。