『壹』 怎麼用java寫一個http介面

一個servlet介面就可以了啊:

HTTP Header 請求實例

下面的實例使用 HttpServletRequest 的getHeaderNames()方法讀取 HTTP 頭信息。該方法返回一個枚舉,包含與當前的 HTTP 請求相關的頭信息。

一旦我們有一個枚舉,我們可以以標准方式循環枚舉,使用hasMoreElements()方法來確定何時停止,使用nextElement()方法來獲取每個參數的名稱。

//導入必需的java庫
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.Enumeration;

importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

@WebServlet("/DisplayHeader")

//擴展HttpServlet類
{

//處理GET方法請求的方法
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException
{
//設置響應內容類型
response.setContentType("text/html;charset=UTF-8");

PrintWriterout=response.getWriter();
Stringtitle="HTTPHeader請求實例-菜鳥教程實例";
StringdocType=
"<!DOCTYPEhtml> ";
out.println(docType+
"<html> "+
"<head><metacharset="utf-8"><title>"+title+"</title></head> "+
"<bodybgcolor="#f0f0f0"> "+
"<h1align="center">"+title+"</h1> "+
"<tablewidth="100%"border="1"align="center"> "+
"<trbgcolor="#949494"> "+
"<th>Header名稱</th><th>Header值</th> "+
"</tr> ");

EnumerationheaderNames=request.getHeaderNames();

while(headerNames.hasMoreElements()){
StringparamName=(String)headerNames.nextElement();
out.print("<tr><td>"+paramName+"</td> ");
StringparamValue=request.getHeader(paramName);
out.println("<td>"+paramValue+"</td></tr> ");
}
out.println("</table> </body></html>");
}
//處理POST方法請求的方法
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
doGet(request,response);
}
}

『貳』 有沒有類似java下httpclient的C++庫,最好開源的,thx

用libcurl啊, 大名鼎鼎的curl底層所使用的庫就是libcurl

『叄』 用java做一個httpClient 發送https 的get請求,需要證書驗證的那種,求大神指點一下!

你那個 SSLSocketFactory(ks) 是自己的類?

你有用過 KeyManager.init (...)? 和 TrustManager.init(...) ?

想要在連接建立過程上互動式的彈出確認對話框來的話需要我們自己提供一個 KeyManager 和 TrustManager 的實現類,這有點復雜,你可以看一個 Sun 的 X509KeyManager 是怎麼做的,默認地情況下它是從自動搜索匹配的 subject ,我們需要用自己提供的方式彈出確認的過程還不是全自動,另外一個賬戶可能有多個數字證書,比如支付寶我們就有多個簽發時間不一樣的數字證書,在連接建立時 IE 會提示我們選擇其中的一個來使用,銀行的 U 盾在安裝多張數字證書時也會提示我們選擇其中一個對應到你正在使用的銀行卡號的那張證書。

『肆』 java怎樣讀取http文件伺服器上的文件列表並下載

文件名不寫死,可以用 File f = new File("存文件的目錄");

調用 String f_names[] = f.list()顯示該目錄下的所有文件

根據路徑和文件名就版可以得到相應的文權件鏈接了,也就可以將其下載下來了。

『伍』 java中有沒有第三方包有HttpWebRequest類的

這個是dot net里的吧。

JDK有個功能有限的HttpURLConnection

Apache HttpComponents 提供了相近版的功能。(HttpClient, HttpAsyncClient)
https://hc.apache.org/index.html

還有個異權步的 AsyncHttpClient https://github.com/AsyncHttpClient/async-http-client

『陸』 JAVA 怎麼實現HTTP的POST方式通訊,以及HTTPS方式傳遞

雖然在 JDK 的 java.net 包中已經提供了訪問 HTTP 協議的基本功能,但是對於大部分應用程序來說,JDK
庫本身提供的功能還不夠豐富和靈活。HttpClient 是 Apache Jakarta Common
下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。以下是簡單的post例子:
String url = "http://www.newsmth.net/bbslogin2.php";
PostMethod postMethod = new PostMethod(url);
// 填入各個表單域的值
NameValuePair[] data = { new NameValuePair("id", "youUserName"),
new NameValuePair("passwd", "yourPwd") };
// 將表單的值放入postMethod中
postMethod.setRequestBody(data);
// 執行postMethod
int statusCode = httpClient.executeMethod(postMethod);
// HttpClient對於要求接受後繼服務的請求,象POST和PUT等不能自動處理轉發
// 301或者302
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY ||
statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
// 從頭中取出轉向的地址
Header locationHeader = postMethod.getResponseHeader("location");
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
return;
}

詳情見:http://www.ibm.com/developerworks/cn/opensource/os-httpclient/

『柒』 客戶端A上有個java程序,怎麼訪問B端的資料庫,需要http協議協議放在哪

這看你的B端是怎麼設計的了,可以使開放HTTP,webservice等。
B端作為服務端架設好後,A端直接調用B端就可以了

『捌』 除了HttpClient,Java還有什麼類似HttpClient的技術

更直接一點吧,用jdk自帶的urlconnection來實現,無需依賴其他庫。下邊的示例實現了post和get方法。
示例如下:

Java代碼

publicclassHttpUtil{
="UTF-8";

publicstaticStringpost(Stringurl,Map<String,String>postParams){
HttpURLConnectioncon=null;
OutputStreamosw=null;
InputStreamins=null;
try{
con=(HttpURLConnection)newURL(url).openConnection();
con.setDoInput(true);
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
if(null!=postParams){
con.setDoOutput(true);
StringpostParam=encodeParameters(postParams);
byte[]bytes=postParam.getBytes(CHARSET);

con.setRequestProperty("Content-Length",
Integer.toString(bytes.length));

osw=con.getOutputStream();
osw.write(bytes);
osw.flush();
}

intresCode=con.getResponseCode();
if(resCode<400){
ins=con.getInputStream();
}else{
ins=con.getErrorStream();
}
returnreadContent(ins);
}catch(IOExceptione){

}finally{

try{
if(osw!=null){
osw.close();
}
if(ins!=null){
ins.close();
}
}catch(IOExceptione){
e.printStackTrace();
}

}
returnnull;
}

publicstaticStringget(Stringurl){
HttpURLConnectioncon=null;
OutputStreamosw=null;
InputStreamins=null;
try{
con=(HttpURLConnection)newURL(url).openConnection();
con.setRequestMethod("GET");


intresCode=con.getResponseCode();
if(resCode<400){
ins=con.getInputStream();
}else{
ins=con.getErrorStream();
}
returnreadContent(ins);
}catch(IOExceptione){

}finally{

try{
if(osw!=null){
osw.close();
}
if(ins!=null){
ins.close();
}
}catch(IOExceptione){
e.printStackTrace();
}

}
returnnull;
}

(InputStreamins)throwsIOException{

StringBuildersb=newStringBuilder();
BufferedReaderbr=newBufferedReader(newInputStreamReader(ins,
HttpUtil.CHARSET));
if(ins!=null){
Stringline;
while((line=br.readLine())!=null){
sb.append(line);
}
}
returnsb.toString();
}

(Map<String,String>postParams){
StringBuilderbuf=newStringBuilder();
if(postParams!=null&&postParams.size()>0){

for(Map.Entry<String,String>tmp:postParams.entrySet()){
try{
buf.append(URLEncoder.encode(tmp.getKey(),CHARSET))
.append("=")
.append(URLEncoder.encode(tmp.getValue(),CHARSET))
.append("&");
}catch(java.io.){
}
}

buf.deleteCharAt(buf.length()-1);

}

returnbuf.toString();

}
}

『玖』 java 連接資料庫問題: 我現在想連接一個資料庫,但是資料庫必須要使用http通道才可以連接.

你自己都說了 "必須要使用http通道才可以連接"
-_-!!!! 難道有人能突破這個特殊的限制 ?
如果能突破,那還能叫 "必須" 么?

『拾』 mysql連接資料庫要使用http通道,java連接資料庫時需要怎麼連

下載驅動的包:我用的是mysql-connector-java-5.1.8-bin.jar,並讓java工程載入這個jar。
從網上摘抄的代碼:
public class DBHelper {
public static final String url = "jdbc:mysql://127.0.0.1/student";
public static final String name = "com.mysql.jdbc.Driver";
public static final String user = "root";
public static final String password = "root";

public Connection conn = null;
public PreparedStatement pst = null;

public DBHelper(String sql) {
try {
Class.forName(name);//指定連接類型
conn = DriverManager.getConnection(url, user, password);//獲取連接
pst = conn.prepareStatement(sql);//准備執行語句
} catch (Exception e) {
e.printStackTrace();
}
}