A. 如何用post的方式請求一個action
你這種情況屬於跨域訪問,也就是說bAction在另外的一個web系統中,你在自己的web系統中有一個aAction,然後從aAction中向bAction發起請求,如果成功的話,根據bAction返回的內容進行跳轉,失敗的話遷移到錯誤畫面,並把錯誤消息顯示在畫面中。
解決方法如下:
在aAction中向http://xxxxxxxxxxxx/bAction.action發起一個http post請求,然後獲取http response回來的狀態碼以及返回來的內容,根據返回來的內容,跳轉到指定的頁面或者action,失敗的話,跳轉到錯誤畫面並顯示錯誤信息。
技術實現可以使用apache提供的httpcomponents-client包。
B. 如何通過瀏覽器實現post請求
第一步:點擊firefox右上方的菜單鍵-->[ 附加組件 ],在搜索框中輸入【poster】,然後點擊【安裝】
安裝完成後重啟狐火瀏覽器(PS:如果在安裝過程中出現下載失敗,或者下載緩慢,你可以嘗試重啟火狐瀏覽器,很多情況下重啟總能解決很多問題)
C. 如何使用POST 方法調用服務
一、WCF REST專用POST方法1.1、 建立WCF REST 方法
private string UseHttpWebApproach(string serviceUrl, string resourceUrl, string method, string requestBody)
{
string responseMessage = null;
var request = WebRequest.Create(string.Concat(serviceUrl, resourceUrl)) as HttpWebRequest;
if (request != null)
{
request.ContentType = "application/json";
request.Method = method;
}
if (method == "POST" && requestBody != null)
{
byte[] requestBodyBytes = (requestBody);
request.ContentLength = requestBodyBytes.Length;
using (Stream postStream = request.GetRequestStream())
postStream.Write(requestBodyBytes, 0, requestBodyBytes.Length);
}
if (request != null)
{
var response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
{
Stream responseStream = response.GetResponseStream();
if (responseStream != null)
{
var reader = new StreamReader(responseStream);
responseMessage = reader.ReadToEnd();
}
}
else
{
responseMessage = response.StatusDescription;
}
}
return responseMessage;
}
private static byte[] (string requestBody)
{
byte[] bytes = null;
var serializer1 = new DataContractJsonSerializer(typeof(string));
var ms1 = new MemoryStream();
serializer1.WriteObject(ms1, requestBody);
ms1.Position = 0;
var reader = new StreamReader(ms1);
bytes = ms1.ToArray();
return bytes;
}
調用WCF REST 方法和一般的POST方法有所不同,區別在於發送前對數據的編碼,採用DataContractJsonSerializer 進行序列化。
D. POST方法訪問HTTPS的函數,該怎麼處理
您好,根據您所提出的問題,我整理出以下資料
uses WinINet, Windows, Sysutils, Classes, IDURI;
procere Post(url, data:string;res:TStream);
var
hInt,hConn,hreq:HINTERNET;
buffer:PChar;
dwRead, dwFlags:cardinal;
port: Word;
uri: TIdURI;
proto, host, path: string;
begin
uri := TIdURI.Create(url);
host := uri.Host;
path := uri.Path + uri.Document;
proto := uri.Protocol;
uri.Free;
if UpperCase(proto) = 'HTTPS' then
begin
port := INTERNET_DEFAULT_HTTPS_PORT;
dwFlags := INTERNET_FLAG_SECURE;
end
else
begin
port := INTERNET_INVALID_PORT_NUMBER;
dwFlags := INTERNET_FLAG_RELOAD;
end;
hInt := InternetOpen('Delphi',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
hConn := InternetConnect(hInt,PChar(host),port,nil,nil,INTERNET_SERVICE_HTTP,0,0);
hreq := HttpOpenRequest(hConn,'POST',PChar(Path),'HTTP/1.1',nil,nil,dwFlags,0);
GetMem(buffer, 65536);
if HttpSendRequest(hReq,nil,0,PChar(data),Length(data)) then
begin
dwRead:=0;
repeat
InternetReadFile(hreq,buffer,65536,dwRead);
if dwRead<>0 then
res.Write(buffer^, dwRead);
until dwRead=0;
end;
InternetCloseHandle(hreq);
InternetCloseHandle(hConn);
InternetCloseHandle(hInt);
FreeMem(buffer);
end;
E. js中 如何在$.post 函數外部 訪問 $.post 中的 變數
$.post默認使用的是非同步執行,所以上面你那樣做,很可能是alert不出來的,要修改這個問題,有兩種方式,方式1(非同步模式,推薦使用,這樣不會頁面卡死):
$.pots('/chcek/check.php',{},function(data){
if(data==1){
isscreen=true;
}else{
isscreen=false;
}
//直接在這里alert
alert(isscreen);
});
方式2(同步模式,不推薦,會卡死頁面):
$.pots('/chcek/check.php',{
async:false//false表示採用同步模式請求
},function(data){
if(data==1){
isscreen=true;
}else{
isscreen=false;
}
});
alert(isscreen);
F. jsp表單提交數據post方法怎麼用如何讀取
getParameter():使用 request.getParameter() 方法來獲取表單參數的值。
getParameterValues():獲得如checkbox類(名字相同,但值有多個)的數據。 接收數組變數 ,如checkbox類型
getParameterNames():該方法可以取得所有變數的名稱,該方法返回一個 Enumeration。
getInputStream():調用此方法來讀取來自客戶端的二進制數據流。
G. 如何給http伺服器發送post請求
1、HTTP請求概述
在前面有一篇文章對HTTP協議有詳細的描述,這里就不再過多的做說明,只是簡單的作為這篇文章的引子。
HTTP協議又被稱為超文本傳輸協議,它的的設計目的是保證客戶機與伺服器之間的通信。HTTP 的工作方式是客戶端與伺服器之間的請求-應答協議。在客戶端和伺服器之間進行請求-響應時,有兩個最基本的請求方式:GET 和 POST。
其中,GET請求表示從指定的資源請求數據,POST請求表示向指定的資源提交要被處理的數據。
2、HTTP請求格式
在HTTP請求中,首先是請求行,注意這里的請求行一定要放在最前面;其次,是請求頭,英文表示為header;然後會空一行,緊接著就可以是請求的具體內容了,一般稱之為請求體,request-body。給出一個圖示如下:
3、GET請求與POST請求對比
GET請求與POST請求有一些異同點,主要有以下幾點問題:
(1)、GET請求和POST請求都是客戶端與伺服器之間交互,請求--應答模式的協議
(2)、GET請求是通過URL直接請求數據,數據信息可以在URL中直接看到,比如瀏覽器訪問;而POST請求是放在請求頭中的,我們是無法直接看到的;
(3)、GET提交有數據大小的限制,一般是不超過1024個位元組,而這種說法也不完全准確,HTTP協議並沒有設定URL位元組長度的上限,而是瀏
覽器做了些處理,所以長度依據瀏覽器的不同有所不同;POST請求在HTTP協議中也沒有做說明,一般來說是沒有設置限制的,但是實際上瀏覽器也有默認
值。總體來說,少量的數據使用GET,大量的數據使用POST。
(4)、GET請求因為數據參數是暴露在URL中的,所以安全性比較低,比如密碼是不能暴露的,就不能使用GET請求;POST請求中,請求參數信息是放在請求頭的,所以安全性較高,可以使用。在實際中,涉及到登錄操作的時候,盡量使用HTTPS請求,安全性更好。
下面給出一副圖示,說明一下HTTP中GET與POST請求的差異:
4、使用步驟:
在Android中使用HTTP請求,主要步驟如下:
(1)、實例化一個HttpGet(或HttpPost)對象,將請求的URL地址通過構造方法傳給HttpGet(或HttpPost)對象;
(2)、使用DefaultHttpClient類的execute方法發送GET或POST 請求,並返回HttpResponse對象;
(3)、通過HttpResponse介面的getEntity方法返回響應信息。
5、實例代碼
給出一個在實際應用中的一個POST請求的代碼片段:
[java] view plain print?
params = new LinkedList();
params.add(new BasicNameValuePair("param1", "Post方法"));
params.add(new BasicNameValuePair("param2", "第二個參數"));
try {
HttpPost post = new HttpPost(baseUrl);
post.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //將參數填入POST Entity中
HttpResponse response = httpClient.execute(post); //執行POST方法
resCode = response.getStatusLine().getStatusCode()); //獲取響應碼
result = EntityUtils.toString(response.getEntity(), "utf-8")); //獲取響應內容
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
6、HTTP請求狀態碼意義
HTTP請求中,主要有這樣幾個類型:1XX:表示信息提示,2XX:表示成功,3XX:表示重定向,4XX:表示客戶端請求錯誤,5XX:表示伺服器錯誤。常見的幾個HTTP請求狀態碼意義如下:
200 OK: 找到了該資源,並且一切正常。
304 NOT MODIFIED: 該資源在上次請求之後沒有任何修改。這通常用於瀏覽器的緩存機制。
401 UNAUTHORIZED: 客戶端無權訪問該資源。這通常會使得瀏覽器要求用戶輸入用戶名和密碼,以登錄到伺服器。
403 FORBIDDEN: 客戶端未能獲得授權。這通常是在401之後輸入了不正確的用戶名或密碼。
404 NOT FOUND: 在指定的位置不存在所申請的資源。
505 NOT SUPPORTED:伺服器不支持請求中所指明的HTTP版本