URL url = new URL("http://www.y.com/url");
InputStream is = url.openStream();
try {
/* Now read the retrieved document from the stream. */
...
} finally {
is.close();
}
Google java http client为http请求提供了很好的API . 您可以轻松添加JSON支持等 . 虽然对于简单的请求,它可能是过度的 .
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import java.io.IOException;
import java.io.InputStream;
public class Network {
static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
public void getRequest(String reqUrl) throws IOException {
GenericUrl url = new GenericUrl(reqUrl);
HttpRequest request = HTTP_TRANSPORT.createRequestFactory().buildGetRequest(url);
HttpResponse response = request.execute();
System.out.println(response.getStatusCode());
InputStream is = response.getContent();
int ch;
while ((ch = is.read()) != -1) {
System.out.print((char) ch);
}
response.disconnect();
}
}
213
这对你有所帮助 . 不要忘记将JAR HttpClient.jar 添加到类路径中 .
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class MainSendRequest {
static String url =
"http://localhost:8080/HttpRequestSample/RequestSend.jsp";
public static void main(String[] args) {
//Instantiate an HttpClient
HttpClient client = new HttpClient();
//Instantiate a GET HTTP method
PostMethod method = new PostMethod(url);
method.setRequestHeader("Content-type",
"text/xml; charset=ISO-8859-1");
//Define name-value pairs to set into the QueryString
NameValuePair nvp1= new NameValuePair("firstName","fname");
NameValuePair nvp2= new NameValuePair("lastName","lname");
NameValuePair nvp3= new NameValuePair("email","email@email.com");
method.setQueryString(new NameValuePair[]{nvp1,nvp2,nvp3});
try{
int statusCode = client.executeMethod(method);
System.out.println("Status Code = "+statusCode);
System.out.println("QueryString>>> "+method.getQueryString());
System.out.println("Status Text>>>"
+HttpStatus.getStatusText(statusCode));
//Get data as a String
System.out.println(method.getResponseBodyAsString());
//OR as a byte array
byte [] res = method.getResponseBody();
//write to file
FileOutputStream fos= new FileOutputStream("donepage.html");
fos.write(res);
//release connection
method.releaseConnection();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
272
您可以像这样使用Socket
String host = "www.yourhost.com";
Socket socket = new Socket(host, 80);
String request = "GET / HTTP/1.0\r\n\r\n";
OutputStream os = socket.getOutputStream();
os.write(request.getBytes());
os.flush();
InputStream is = socket.getInputStream();
int ch;
while( (ch=is.read())!= -1)
System.out.print((char)ch);
socket.close();
9 回答
你可以使用java.net.HttpUrlConnection .
示例(from here),有改进 . 包含在链接腐烂的情况下:
来自Oracle's java tutorial
我知道其他人会推荐Apache的http客户端,但它增加了复杂性(即更多可能出错的东西),这是很少有必要的 . 对于一个简单的任务,
java.net.URL
会这样做 .Apache HttpComponents . 两个模块的示例 - HttpCore和HttpClient将立即开始 .
不是HttpUrlConnection是一个糟糕的选择,HttpComponents将抽象出很多繁琐的编码 . 如果你真的想用最少的代码支持很多HTTP服务器/客户端,我会推荐这个 . 顺便说一句,HttpCore可用于具有最小功能的应用程序(客户端或服务器),而HttpClient将用于需要支持多种身份验证方案,cookie支持等的客户端 .
这是一个完整的Java 7程序:
新的try-with-resources将自动关闭Scanner,它将自动关闭InputStream .
Google java http client为http请求提供了很好的API . 您可以轻松添加JSON支持等 . 虽然对于简单的请求,它可能是过度的 .
这对你有所帮助 . 不要忘记将JAR
HttpClient.jar
添加到类路径中 .您可以像这样使用Socket
有关发送POST请求here的一个很好的链接,例如Depot ::
如果您想发送GET请求,可以稍微修改代码以满足您的需求 . 具体而言,您必须在URL的构造函数中添加参数 . 然后,也注释掉这个
wr.write(data);
有一件事没有写,你应该提防,是超时 . 特别是如果你想在WebServices中使用它,你必须设置超时,否则上面的代码将无限期地等待或者至少持续很长时间,这可能是你不想要的 .
超时设置如此
conn.setReadTimeout(2000);
输入参数以毫秒为单位