実習記録
2828 ワード
2つの小さなインタフェース、半日で完成し、1日でデバッグし、2日で引き継ぎます.ここ数日心が砕けて、現地でデータを手に入れるのはすべて正常で、テスト服の上に置くのは正常ではありませんて、1日やってやっと伝送であることを発見した時dataのタイプはString型になりました.Objectに変更すればいいです.また、テストインタフェースを書く時までは経験がなく、すべての方法を開いていたので、テストの時に多くの時間を無駄にして待っていたので、後でその方法をテストするにはそれの@Testを開けばいいので、その他は注釈すればいいです.また、ローカルでもネットワーク転送をテストするデータをシミュレートすることができ、必ずしもテスト服に置かなくてもネットワーク転送で得られたデータをテストすることができます.
public class HttpRequestUtils{
/**
* HTTP Post
* @param url url
* @param params
* @param charset
* @return
*/
public static String doPost(String url,Map<String,String> params,String charset){
if(url==null||"".equals(url)){
return null;
}
try {
List<NameValuePair> pairs = null;
if(params != null && !params.isEmpty()){
pairs = new ArrayList<NameValuePair>(params.size());
for(Map.Entry<String,String> entry : params.entrySet()){
String value = entry.getValue();
if(value != null){
pairs.add(new BasicNameValuePair(entry.getKey(),value));
}
}
}
HttpPost httpPost = new HttpPost(url);
if(pairs != null && pairs.size() > 0){
httpPost.setEntity(new UrlEncodedFormEntity(pairs,CHARSET));
}
CloseableHttpResponse response = httpClient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != 200) {
httpPost.abort();
StringBuffer msg=new StringBuffer();
if(params!=null&&!params.isEmpty()){
for(Map.Entry<String,String> entry : params.entrySet()){
msg.append(entry.getKey()).append("=").append(entry.getValue()).append(" ");
}
}
throw new RuntimeException("HttpClient,error status code :" + statusCode+" url:"+url+" params:"+msg.toString());
}
HttpEntity entity = response.getEntity();
String result = null;
if (entity != null){
result = EntityUtils.toString(entity, "utf-8");
}
EntityUtils.consume(entity);
response.close();
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
String result = HttpRequestUtils.doPost(url, param);