1. 程式人生 > >java模擬httppost和httpget遇到的問題

java模擬httppost和httpget遇到的問題

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


 
  
總結:平常開發過程中一定要仔細一點,這樣才能節約更多的時間。