为什么相同的java httpclient代码在不同的平台(linux和windows)下返回不同的结果?
当我在windows和linux下运行相同的代码时,会得到不同的结果!换句话说,它在windows中运行良好,而在linux中却失败了!有人能帮我解决这个问题吗 我要获取的网页是 代码如下所示:为什么相同的java httpclient代码在不同的平台(linux和windows)下返回不同的结果?,java,linux,apache,httpclient,web-crawler,Java,Linux,Apache,Httpclient,Web Crawler,当我在windows和linux下运行相同的代码时,会得到不同的结果!换句话说,它在windows中运行良好,而在linux中却失败了!有人能帮我解决这个问题吗 我要获取的网页是 代码如下所示: import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class api {
public String fetchAPI(String url) {
GetMethod getMethod;
HttpClient client = new HttpClient();
int statusCode;
getMethod = new GetMethod(url);
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
getMethod.getParams().setParameter("http.protocol.cookie-policy",
CookiePolicy.BROWSER_COMPATIBILITY);
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
BufferedReader reader = null;
String result = "";
String line = "";
try {
statusCode = client.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: "
+ getMethod.getStatusLine());
}
reader = new BufferedReader(new InputStreamReader(
getMethod.getResponseBodyAsStream(), "utf-8"));
if (reader != null) {
while ((line = reader.readLine()) != null) {
// System.out.println(line);
result += line;
}
reader.close();
getMethod.releaseConnection();
return result;
} else{
reader.close();
getMethod.releaseConnection();
return "";
}
} catch (Exception e) {
getMethod.releaseConnection();
System.out.println("opsss");
return "";
}
}
public static void main(String[] arg){
System.out.println(fetchAPI("http://www.linkedin.com/pub/song-xuemeng/4b/683/565"));
}
}
什么样的失败?如果是异常,请发布堆栈跟踪。可能有很多原因,包括许多与Linux和Windows之间的差异无关的原因。如果您想让我们帮助您,您需要向我们提供更多信息。您不应该使用不再受支持的Commons HttpClient,而应该使用HttpComponents HttpClient:并且此代码甚至不编译,您从静态的main调用非静态的fetchAPI。您的else is dead代码读取器将永远不会为空,你影响它就在前面的那一行。一旦我编译了代码,它就会正确地获取页面的内容。