import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.testng.annotations.Test;
import com.bj58.qa.atf.listener.Logger;
import com.bj58.qa.m.data.initParamProvider;
public class SearchCase {
public String paraUrl(String url,Map<String,String> map){
if(!url.contains("?")){
url+="?";
}
if(!url.startsWith("http://")){
url="http://"+url;
}
if(map!=null && !map.isEmpty()){
for(Map.Entry<String, String> para:map.entrySet()){
if(para.getValue()==null){
url+=para.getKey()+"="+"&";
}else{
url+=para.getKey()+"="+para.getValue()+"&";
}
}
url=url.substring(0,url.length()-1);
}
return url;
}
@Test(dataProvider="searchdata",dataProviderClass=initParamProvider.class)
public void searchBox(String keys) throws UnsupportedEncodingException{
BufferedReader in = null;
Map<String,String> map=new LinkedHashMap();
map.put("inputbox", keys);
map.put("cityid","1");
map.put("catid", "0");
map.put("clinet", "m");
map.put("callback","callback");
String url=paraUrl("http://suggest.58.com.cn/searchsuggest_14.do",map);
Logger.log("url="+url,true);
HttpClient httpc=new DefaultHttpClient();
try{
HttpGet httpgets=new HttpGet(url);
HttpResponse httpres=httpc.execute(httpgets);
if(httpres.getStatusLine().getStatusCode()==200||httpres.getStatusLine().getStatusCode()==201){
in=new BufferedReader(new InputStreamReader(httpres.getEntity()
.getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");//此方法 是获取系统属性的值,下面会列出别的博友写的这个方法的一些用法
System.out.println(NL);
try{
while ((line = in.readLine()) != null) {
sb.append(line+NL);
}
in.close();
String result = sb.toString();
Logger.log(result,true);
Logger.log("=======================");
// Logger.log(EntityUtils.toString(httpres.getEntity(),"GBK"));//getEntity()只能获取一个实体,不可重复获取,可能会报出 实体流关闭的异常
// Logger.log(EntityUtils.toString(httpres.getEntity(),"utf-8"));
}catch(IOException e){
e.printStackTrace();
}
}
}catch(Exception e){
e.printStackTrace();
}
finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
其实现在我还有一个比较纠结的问题没有解决 ,就是 用EntityUtils.toString()方法解析的 实体会存在中文乱码的现象,但是同样用数据流自己解析出来的InputStream流中的内容就不存在中文乱码的问题,希望已经解决了这方面问题的网友能给我也解释一下。
BufferedReader in = null;
try {
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("http://m.58.com/AddInterfacePerson");
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("InterfacePersonInfo", "{\"mailid\":\"111\",\"phonenumber\":\"111\",\"interfaceperson\":\"111\"}"));
UrlEncodedFormEntity formEntiry = new UrlEncodedFormEntity(parameters);
request.setEntity(formEntiry);
// 执行请求
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity()
.getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
String result = sb.toString();
return result;
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.testng.annotations.Test;
import com.bj58.qa.atf.listener.Logger;
import com.bj58.qa.m.data.initParamProvider;
public class SearchCase {
public String paraUrl(String url,Map<String,String> map){
if(!url.contains("?")){
url+="?";
}
if(!url.startsWith("http://")){
url="http://"+url;
}
if(map!=null && !map.isEmpty()){
for(Map.Entry<String, String> para:map.entrySet()){
if(para.getValue()==null){
url+=para.getKey()+"="+"&";
}else{
url+=para.getKey()+"="+para.getValue()+"&";
}
}
url=url.substring(0,url.length()-1);
}
return url;
}
@Test(dataProvider="searchdata",dataProviderClass=initParamProvider.class)
public void searchBox(String keys) throws UnsupportedEncodingException{
BufferedReader in = null;
Map<String,String> map=new LinkedHashMap();
map.put("inputbox", keys);
map.put("cityid","1");
map.put("catid", "0");
map.put("clinet", "m");
map.put("callback","callback");
String url=paraUrl("http://suggest.58.com.cn/searchsuggest_14.do",map);
Logger.log("url="+url,true);
HttpClient httpc=new DefaultHttpClient();
try{
HttpGet httpgets=new HttpGet(url);
HttpResponse httpres=httpc.execute(httpgets);
if(httpres.getStatusLine().getStatusCode()==200||httpres.getStatusLine().getStatusCode()==201){
in=new BufferedReader(new InputStreamReader(httpres.getEntity()
.getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");//此方法 是获取系统属性的值,下面会列出别的博友写的这个方法的一些用法
System.out.println(NL);
try{
while ((line = in.readLine()) != null) {
sb.append(line+NL);
}
in.close();
String result = sb.toString();
Logger.log(result,true);
Logger.log("=======================");
// Logger.log(EntityUtils.toString(httpres.getEntity(),"GBK"));//getEntity()只能获取一个实体,不可重复获取,可能会报出 实体流关闭的异常
// Logger.log(EntityUtils.toString(httpres.getEntity(),"utf-8"));
}catch(IOException e){
e.printStackTrace();
}
}
}catch(Exception e){
e.printStackTrace();
}
finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
其实现在我还有一个比较纠结的问题没有解决 ,就是 用EntityUtils.toString()方法解析的 实体会存在中文乱码的现象,但是同样用数据流自己解析出来的InputStream流中的内容就不存在中文乱码的问题,希望已经解决了这方面问题的网友能给我也解释一下。
BufferedReader in = null;
try {
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("http://m.58.com/AddInterfacePerson");
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("InterfacePersonInfo", "{\"mailid\":\"111\",\"phonenumber\":\"111\",\"interfaceperson\":\"111\"}"));
UrlEncodedFormEntity formEntiry = new UrlEncodedFormEntity(parameters);
request.setEntity(formEntiry);
// 执行请求
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity()
.getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
String result = sb.toString();
return result;
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
java.version | Java 运行时环境版本 |
java.vendor | Java 运行时环境供应商 |
java.vendor.url | Java 供应商的 URL |
java.home | Java 安装目录 |
java.vm.specification.version | Java 虚拟机规范版本 |
java.vm.specification.vendor | Java 虚拟机规范供应商 |
java.vm.specification.name | Java 虚拟机规范名称 |
java.vm.version | Java 虚拟机实现版本 |
java.vm.vendor | Java 虚拟机实现供应商 |
java.vm.name | Java 虚拟机实现名称 |
java.specification.version | Java 运行时环境规范版本 |
java.specification.vendor | Java 运行时环境规范供应商 |
java.specification.name | Java 运行时环境规范名称 |
java.class.version | Java 类格式版本号 |
java.class.path | Java 类路径 |
java.library.path | 加载库时搜索的路径列表 |
java.io.tmpdir | 默认的临时文件路径 |
java.compiler | 要使用的 JIT 编译器的名称 |
java.ext.dirs | 一个或多个扩展目录的路径 |
os.name | 操作系统的名称 |
os.arch | 操作系统的架构 |
os.version | 操作系统的版本 |
file.separator | 文件分隔符(在 UNIX 系统中是“/”) |
path.separator | 路径分隔符(在 UNIX 系统中是“:”) |
line.separator | 行分隔符(在 UNIX 系统中是“/n”) |
user.name | 用户的账户名称 |
user.home | 用户的主目录 |
user.dir | 用户的当前工作目录 |