做了一个功能,就是获取车辆的年票信息,代码如下
action里面的代码
String searchdqcph = "粤s.F3462";
String searchcx = "G";
String url = "http://www.dgsfs.net/product_search.asp?searchdqcph="+searchdqcph+"&searchcx="+searchcx;
String htmlContent = GetHttpClint.doGet(url);GetHttpClint.java的代码public static String doGet(String url) {
InputStream in ;
HttpClient client = new HttpClient();
GetMethod method = new GetMethod(url);
method.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
StringBuffer buffer = new StringBuffer();
try {
client.executeMethod(method);
int statecode = method.getStatusCode();
if (statecode == HttpStatus.SC_OK) {
//response = method.getResponseBodyAsString();
in = method.getResponseBodyAsStream();
//System.out.println(response);
in = new BufferedInputStream(in);
Reader r = new InputStreamReader(in,"gb2312");
int c;
while ((c = r.read()) != -1)
buffer.append((char)c);
in.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
method.releaseConnection();
}
return buffer.toString();
}
在执行到GetMethod method = new GetMethod(url);的代码时出错,出错信息如下2010-11-25 20:19:14 org.apache.struts.action.RequestProcessor processException
警告: Unhandled Exception thrown: class java.lang.IllegalArgumentException
2010-11-25 20:19:14 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet action threw exception
java.lang.IllegalArgumentException: Invalid uri 'http://www.dgsfs.net/product_search.asp?searchdqcph=粤s.F3462&searchcx=G': Invalid query
at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:222)
at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89)
at front.mycar.GetHttpClint.doGet(GetHttpClint.java:37)
at front.mycar.MyCarAction.searchticket(MyCarAction.java:139)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.tuckey.web.filters.urlrewrite.RewrittenUrl.doRewrite(RewrittenUrl.java:176)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at filter.Loginfilter.doFilter(Loginfilter.java:34)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at filter.Filter.doFilter(Filter.java:25)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)不知为什么会有这种问题出现,我看网上的例子也都是这样的,之前我做过POST的提交没出问题
action里面的代码
String searchdqcph = "粤s.F3462";
String searchcx = "G";
String url = "http://www.dgsfs.net/product_search.asp?searchdqcph="+searchdqcph+"&searchcx="+searchcx;
String htmlContent = GetHttpClint.doGet(url);GetHttpClint.java的代码public static String doGet(String url) {
InputStream in ;
HttpClient client = new HttpClient();
GetMethod method = new GetMethod(url);
method.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
StringBuffer buffer = new StringBuffer();
try {
client.executeMethod(method);
int statecode = method.getStatusCode();
if (statecode == HttpStatus.SC_OK) {
//response = method.getResponseBodyAsString();
in = method.getResponseBodyAsStream();
//System.out.println(response);
in = new BufferedInputStream(in);
Reader r = new InputStreamReader(in,"gb2312");
int c;
while ((c = r.read()) != -1)
buffer.append((char)c);
in.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
method.releaseConnection();
}
return buffer.toString();
}
在执行到GetMethod method = new GetMethod(url);的代码时出错,出错信息如下2010-11-25 20:19:14 org.apache.struts.action.RequestProcessor processException
警告: Unhandled Exception thrown: class java.lang.IllegalArgumentException
2010-11-25 20:19:14 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet action threw exception
java.lang.IllegalArgumentException: Invalid uri 'http://www.dgsfs.net/product_search.asp?searchdqcph=粤s.F3462&searchcx=G': Invalid query
at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:222)
at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89)
at front.mycar.GetHttpClint.doGet(GetHttpClint.java:37)
at front.mycar.MyCarAction.searchticket(MyCarAction.java:139)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.tuckey.web.filters.urlrewrite.RewrittenUrl.doRewrite(RewrittenUrl.java:176)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at filter.Loginfilter.doFilter(Loginfilter.java:34)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at filter.Filter.doFilter(Filter.java:25)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)不知为什么会有这种问题出现,我看网上的例子也都是这样的,之前我做过POST的提交没出问题
用httpwatch看了下,
http://www.dgsfs.net/product_search.asp?searchdqcph=粤s.F3462&searchcx=G
这个页面是能打开,
不过返回的httpstatus是500
不清楚是何原因
估计是这个造成的无法获取信息
我按照httpwatch跟踪的所有header属性
把urlconnection都填充了,
也不行
杯具
String searchcx = "G";
String url = "http://www.dgsfs.net/product_search.asp?searchdqcph="+URLEncoder.encode(searchdqcph, 'utf-8')+"&searchcx="+searchcx;
String htmlContent = GetHttpClint.doGet(url);