HttpClient 的问题 在java 下编译出错。

cky1234567 2011-10-07 12:34:29
我是新手,所以一边看代码,一边编译,加深理解,结果,一编译就报错,
但又不是语法错误,求高手给解释一下。
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.HttpVersion;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.message.BasicHttpResponse;
public class Client {
static URI uri;
/**
* @param args
* @throws IOException
* @throws ClientProtocolException
* @throws URISyntaxException
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1,
HttpStatus.SC_OK, "OK");
System.out.println(response.getProtocolVersion());
System.out.println(response.getStatusLine().getStatusCode());
System.out.println(response.getStatusLine().getReasonPhrase());
System.out.println(response.getStatusLine().toString());


}

}











Exception in thread "main" java.lang.RuntimeException: Stub!
at org.apache.http.message.AbstractHttpMessage.<init>(AbstractHttpMessage.java:6)
at org.apache.http.message.BasicHttpResponse.<init>(BasicHttpResponse.java:8)
at Client.main(Client.java:20)
...全文
466 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cky1234567 2011-10-08
  • 打赏
  • 举报
回复
D:\Program Files\Java\commons-httpclient-3.0.jar 我最后加了这个,
里面有这些
org.apache.commons.httpclient
org.apache.commons.httpclient.auth
org.apache.commons.httpclient.cookie
org.apache.commons.httpclient.methods
org.apache.commons.httpclient.methods.multipart
org.apache.commons.httpclient.params
org.apache.commons.httpclient.protocol
org.apache.commons.httpclient.util


可是,没有import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;


你能给我一个包吗? 下载地址也行。 不过我没积分了。
cky1234567 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhouyusunquan 的回复:]
public class HttpConnect {
public static String readContentFromGet(String getUrlString, String param,
String udcode, String password, String path) throws IOException {
// 拼凑get请求的URL字串,使用URLEncoder……
[/Quote]
谢谢, 现在,我有点 搞不明白,import org.apache.http
org.apache.commons.httpclient 该用哪个,网上有些程序没有注明,引起哪个包。
zhouyusunquan 2011-10-08
  • 打赏
  • 举报
回复
public class HttpConnect {
public static String readContentFromGet(String getUrlString, String param,
String udcode, String password, String path) throws IOException {
// 拼凑get请求的URL字串,使用URLEncoder.encode对特殊和不可见字符进行编码
// String getURL =getUrlString+URLEncoder.encode(param,udcode);
if (getUrlString.startsWith("https:")) {
// System.setProperty("javax.net.ssl.trustStore",path);
// / System.setProperty("javax.net.ssl.trustStorePassword",chante);
System.setProperty("javax.net.ssl.keyStore", "server.ks");
System.setProperty("javax.net.ssl.keyStorePassword", "Passw0rds");
}
String getURL = getUrlString + param;
URL getUrl = new URL(getURL);
// 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,
// 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) getUrl
.openConnection();
// 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到
// 服务器
connection.connect();
// 取得输入流,并使用Reader读取 ȡ���������ʹ��Reader��ȡ
String msg = "";
msg = HttpConnect.convertStreamToString(connection.getInputStream());
System.out.println(msg);
connection.disconnect();
return msg;
}

public static String readContentFromPost(String postUrlString,
String param, String udcode, String password, String path)
throws IOException {
// Post请求的url,与get不同的是不需要带参数
URL postUrl = new URL(postUrlString);
if (postUrlString.startsWith("https:")) {
System.setProperty("javax.net.ssl.trustStore",
"D:\\certi\\server.ks");
System.setProperty("javax.net.ssl.trustStorePassword", "accident");
System
.setProperty("javax.net.ssl.keyStore",
"D:\\certi\\server.ks");
System.setProperty("javax.net.ssl.keyStorePassword", "accident");
}

// 打开连接
HttpURLConnection connection = (HttpURLConnection) postUrl
.openConnection();
// Output to the connection. Default is
// false, set to true because post
// method must write something to the
// connection
// 设置是否向connection输出,因为这个是post请求,参数要放在
// http正文内,因此需要设为true
connection.setDoOutput(true);
// Read from the connection. Default is true.
connection.setDoInput(true);
// Set the post method. Default is GET
connection.setRequestMethod("POST");
// Post cannot use caches
// Post 请求不能使用缓存
connection.setUseCaches(false);
// This method takes effects to
// every instances of this class.
// URLConnection.setFollowRedirects是static函数,作用于所有的URLConnection对象。
// connection.setFollowRedirects(true);

// This methods only
// takes effacts to this
// instance.
// URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
connection.setInstanceFollowRedirects(true);
// Set the content type to urlencoded,
// because we will write
// some URL-encoded content to the
// connection. Settings above must be set before connect!
// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
// 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode
// 进行编码
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
// 要注意的是connection.getOutputStream会隐含的进行connect。
connection.connect();
DataOutputStream out = new DataOutputStream(connection
.getOutputStream());
// The URL-encoded contend
// 正文,正文内容其实跟get的URL中'?'后的参数字符串一致

String content = URLEncoder.encode(param, udcode);
// DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面
out.writeBytes(content);

out.flush();
out.close(); // flush and close
String msg = "";
msg = HttpConnect.convertStreamToString(connection.getInputStream());
System.out.println(msg);
connection.disconnect();
return msg;
}

public static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();

String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}

return sb.toString();
}
cky1234567 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiaozhuangfeng 的回复:]

你如果没有导入common.jar的话,应该import org.apache.commons.httpclient.HttpClient的时候应该就会报错的吧
[/Quote]
我现在,不知道,该用哪个org.apache.commons.httpclient.HttpClient
还是 org.apache.http.
哪个是比较新的, 支持http代理的。
xiaozhuangfeng 2011-10-08
  • 打赏
  • 举报
回复
你如果没有导入common.jar的话,应该import org.apache.commons.httpclient.HttpClient的时候应该就会报错的吧
cky1234567 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 itbasketplayer 的回复:]
里面一定有会产生异常的方法,抛异常throws +异常类型或者try catch,我还有一个疑问,你怎么没连接URL。给你个简单参考的

Java code

package http.demo;

import java.io.IOException;
//http://passport.csdn.net/account/login?from=http%3A%2F%2Fhi.csd……
[/Quote]
谢谢,可以运行了。最开始时没有common包,后来是我头文件,引入错了。
cky1234567 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 itbasketplayer 的回复:]
里面一定有会产生异常的方法,抛异常throws +异常类型或者try catch,我还有一个疑问,你怎么没连接URL。给你个简单参考的

Java code

package http.demo;

import java.io.IOException;
//http://passport.csdn.net/account/login?from=http%3A%2F%2Fhi.csd……
[/Quote]
谢谢,我好像是org.apache.commons的包没有 引入。
1、怎么引入啊。eclipse 我只能到 java build path ->libraries 接下来 该怎么选。
2、我该引入那个文件。
3、是不是,没次都要引入的。
4、org.apache.commons.httpclient 要引入哪一个?
照理说,自己百度比较好,但是,我找不到。
2008/09/18 15:18 3,255,912 commons-beanutils-1.8.0-bin.zip
2008/09/18 16:28 2,549,969 commons-betwixt-0.8.zip
2008/09/18 16:29 503,248 commons-cli-1.1.zip
2008/09/18 16:28 249,756 commons-codec-1.3.zip
2008/09/18 15:19 5,144,402 commons-collections-3.2.1-bin.zip
2008/09/18 16:30 648,169 commons-digester-1.8.zip
2008/09/18 16:37 609,069 commons-discovery-0.4.zip
2008/09/18 15:17 233,720 commons-email-1.1-bin.zip
2008/09/18 16:39 1,106,014 commons-fileupload-1.2.1-bin.zip
2008/09/18 15:20 1,224,101 commons-io-1.4-bin.zip
2008/09/18 15:21 1,974,426 commons-lang-2.4-bin.zip
2008/09/18 16:24 1,187,615 commons-net-1.4.1.zip
  • 打赏
  • 举报
回复
里面一定有会产生异常的方法,抛异常throws +异常类型或者try catch,我还有一个疑问,你怎么没连接URL。给你个简单参考的
package http.demo;

import java.io.IOException;
//http://passport.csdn.net/account/login?from=http%3A%2F%2Fhi.csdn.net%3F%26t%3D1317216244
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

public class Httpclient {
public static void main(String[] args) throws IOException
{
HttpClient httpclient=new HttpClient();
HttpMethod method=new GetMethod("http://baidu.com");
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
try {
int statusCode=httpclient.executeMethod(method);
if(statusCode!=HttpStatus.SC_OK);
{
System.err.println("Method failed: "+method.getStatusLine());
}
byte[] responseBody=method.getResponseBody();
System.out.println(new String(responseBody));
} catch (HttpException e) {
// TODO Auto-generated catch block
System.out.println("Please check your provided http address!");

e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

method.releaseConnection();
}
}
cky1234567 2011-10-07
  • 打赏
  • 举报
回复
我就是用eclipse 写的,但是这段代码没有提醒我加异常。 我也不知道该加什么异常。
淡定的峰哥 2011-10-07
  • 打赏
  • 举报
回复
异常没捕捉,要么捕捉,要么在main方法上抛出
建议写class时用eclipse,这样自动会给你提示的

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧