A. java http可以websocket不行
解決方案如下:
因為HTTPS是基於SSL依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通信加密,所以在HTTPS站點調用某些非SSL驗證的資源時瀏覽器可能會阻止。
方案一:假設HTTPS站點使用Nginx伺服器,其他伺服器也是類似的思路,可以用伺服器代理ws服務,可以用nginx的WebSocket proxying。
這樣客戶端請求的是wss://伺服器,通過nginx的WebSocket proxying代理到實際不支持ssl的websocket伺服器。
方案二:直接為WebSocket伺服器增加ssl證書,這樣就可以直接通過wss://來請求伺服器了,以swoole為例,其他伺服器也是類似的思路。
B. 如何使用java實現基於Http協議的大文件傳輸
雖然在JDK的java.net包中已經提供了訪問HTTP協議的基本功能,但是對於大部分應用程序來說,JDK庫本身提供的功能還不夠豐富和靈活。HttpClient是ApacheJakartaCommon下的子項目,用來提供高效的、最新的、功能豐富的支持HTTP協議的客戶端編程工具包,並且它支持HTTP協議最新的版本和建議。以下是簡單的post例子:Stringurl="bbslogin2.php";PostMethodpostMethod=newPostMethod(url);//填入各個表單域的值NameValuePair[]data={newNameValuePair("id","youUserName"),newNameValuePair("passwd","yourPwd")};//將表單的值放入postMethod中postMethod.setRequestBody(data);//執行postMethodintstatusCode=httpClient.executeMethod(postMethod);//HttpClient對於要求接受後繼服務的請求,象POST和PUT等不能自動處理轉發//301或者302if(statusCode==HttpStatus.SC_MOVED_PERMANENTLY||statusCode==HttpStatus.SC_MOVED_TEMPORARILY){//從頭中取出轉向的地址HeaderlocationHeader=postMethod.getResponseHeader("location");Stringlocation=null;if(locationHeader!=null){location=locationHeader.getValue();System.out.println("Thepagewasredirectedto:"+location);}else{System.err.println("Locationfieldvalueisnull.");}return;}詳情見:/developerworks/cn/opensource/os-httpclient/
C. java http 客戶端有哪些
1、Apache httpcomponents-client
2、Apache commons-httpclient
3、Apache HttpAsyncClient
D. Java客戶端通過Http發送POST請求上傳文件
要按http的multi-part上傳的。接收端,再按multi-part解析成文件流
E. 客戶端(C#)通過HTTP協議怎麼向伺服器端(java)傳送文件(常用的是圖片) ,伺服器端又怎麼解析
private string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
{
string ret = string.Empty;
try
{
byte[] byteArray = dataEncode.GetBytes(paramData); //轉化
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Method = "POST";
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//寫入參數
newStream.Close();
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
ret = sr.ReadToEnd();
sr.Close();
response.Close();
newStream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return ret;
}
F. 請教http摘要認證客戶端的Java實現
HttpURLConnection hc = null;
try
{
hc = (HttpURLConnection) new URL(url).openConnection();
hc.setConnectTimeout(10000);
hc.setReadTimeout(10000);
hc.setDoInput(true);
hc.setDoOutput(true);
hc.setUseCaches(false);
String content = param;
DataOutputStream out = new DataOutputStream(hc.getOutputStream());
out.writeBytes(content);
out.flush();
out.close();
//從hc中取出sessionId
for (int i = 1; (key = hc.getHeaderFieldKey(i)) != null; i++)
{
if (key.equalsIgnoreCase("Set-Cookie"))
{
sessionId = hc.getHeaderField(key);
sessionId = sessionId.substring(0, sessionId.indexOf(";"));
break;
}
}
BufferedReader reader = new BufferedReader(
new InputStreamReader(hc.getInputStream()));
String lines;
while ((lines = reader.readLine()) != null)
{
break;
}
reader.close();
catch (Exception e)
{
//
//e.printStackTrace();
return false;
}
finally
{
// 斷開連接
hc.disconnect();
}