如何訪問客戶發佈到我的傳統ASP服務器的內容? 我知道有Request.Forms變量,但客戶端的請求不是使用Form進行的。 客戶端請求的主體只是一個使用標準POST語句創建的字符串。 謝謝使用經典ASP訪問請求的正文(從iOS客戶端發佈)?
回答
如果客戶端發送的請求的內容類型不是表單數據,則需要讀取請求字節。在這種情況下,請求不是可通過名稱 - 值對訪問的表單數據,因此您無法使用Request.Form集合。我建議調查BinaryRead方法。
閱讀發佈的數據並將其轉換爲字符串:
If Request.TotalBytes > 0 Then
Dim lngBytesCount
lngBytesCount = Request.TotalBytes
Response.Write BytesToStr(Request.BinaryRead(lngBytesCount))
End If
Function BytesToStr(bytes)
Dim Stream
Set Stream = Server.CreateObject("Adodb.Stream")
Stream.Type = 1 'adTypeBinary
Stream.Open
Stream.Write bytes
Stream.Position = 0
Stream.Type = 2 'adTypeText
Stream.Charset = "iso-8859-1"
BytesToStr = Stream.ReadText
Stream.Close
Set Stream = Nothing
End Function
希望它能幫助。
更新#1:
隨着使用JScript中
if(Request.TotalBytes > 0){
var lngBytesCount = Request.TotalBytes
Response.Write(BytesToStr(Request.BinaryRead(lngBytesCount)))
}
function BytesToStr(bytes){
var stream = Server.CreateObject("Adodb.Stream")
stream.type = 1
stream.open
stream.write(bytes)
stream.position = 0
stream.type = 2
stream.charset = "iso-8859-1"
var sOut = stream.readtext()
stream.close
return sOut
}
非常感謝。我知道我的理解中缺少某些東西。我會調查你的解決方案。欣賞它。 – user798719 2012-03-19 20:15:42
我很高興我能幫上忙。 – 2012-03-19 22:06:29
嗨,我無法讓你的解決方案工作。你或者有人能告訴我這是如何在jscript中完成的嗎?掛斷位於Stream.Write字節中。口譯員表示正在等待「;」。我嘗試了在同一頁面上混合並匹配jscript和vbscript,但是並沒有太多。 – user798719 2012-03-20 18:49:05
在經典ASP中,Request.Form
是用於通過POST發送的任何數據的集合。
爲了完整起見,我將補充說明Request.QueryString
是用於通過GET /查詢字符串發送的任何數據的集合。
我猜想基於上述,即使客戶端不是一個Web瀏覽器,應該填充Request.Form集合。
注:所有這一切都是假設發送的數據是在本質上是文本,並且不存在任何二進制上傳(例如圖片或文件)發送。如果這是不正確的假設,請更新您的問題主體。
爲了測試,寫出來的原始形式的數據,看看你有什麼 - 沿着線的東西:
Response.Write(Request.Form)
與正規的網頁將輸出類似
field=value&field2=value2
如果你沿着這些方向得到了一些東西,那麼你可以用它作爲正確索引的參考。
如果你沒有得到那樣的東西,請更新你的問題與你試過什麼,你得到了什麼。
謝謝你的幫助。 我的客戶端(ios)能夠在發佈到URL時基本設置請求主體。 [request setHTTPBody:requestData]; 客戶沒有使用表格或任何東西。從客戶端發送的有效載荷是一個字符串(儘管它被iOS封裝在一個NSData對象中)。所以我認爲POST的數據不必附加到Request.Form。因此我的困惑。 – user798719 2012-03-19 19:51:40
這是否意味着我需要在從ios客戶端發佈時添加鍵值對?我沒有看到一旦它達到我的asp表單,我將如何訪問郵件正文 – user798719 2012-03-19 20:01:09
非常感謝。我非常感謝你的幫助。 – user798719 2012-03-21 04:07:36
要獲得JSON字符串值,只需使用CStr(Request.Form)
作品一種享受。
- 1. 如何訪問客戶端頭請求
- 2. 請勿使用google api ruby客戶端請求離線訪問
- 3. 經典ASP:檢查頭是否發送到客戶端
- 4. 如何從JavaFX客戶端發起HTTP發佈請求
- 5. 使用經典ASP發送'application/soap + xml'SOAP請求
- 6. 使用請求HTTP客戶端庫發佈到FastSpring API
- 7. 的NuSOAP,服務器端(PHP)和客戶端ASP經典
- 8. 從ASP經典訪問Python包裝器
- 9. 在經典的ASP CURL請求
- 10. JAX-WS客戶端|用安全頭髮送客戶端請求
- 11. 經典ASP客戶端對象調用COM異常頁面
- 12. 經典ASP - CINT錯誤,請求丟失
- 13. 使用Grails的SOAP客戶端請求
- 14. 請問VS 2012支持經典的asp?
- 15. 如何從傳統ASP請求獲取* actual *客戶端URL?
- 16. 公佈的文件無法從客戶端訪問
- 17. 使用ASP經典
- 18. Swift Http客戶端不發送請求
- 19. 快車 - 訪問客戶端的IP時的index.html請求
- 20. 來自客戶端訪問API的AJAX請求的安全性
- 21. 經典ASP黑客 - 注入
- 22. Objective-C SOAP客戶端 - 請求問題?
- 23. 請求()使用ID或名稱屬性經典ASP
- 24. 使用VB/ASP經典API可以實現HTTP請求嗎?
- 25. 在發佈請求中訪問已登錄的用戶數據?
- 26. 經典ASP,發送POST請求做其他域
- 27. 經典asp問題
- 28. Android - 客戶端服務器,發佈請求
- 29. 通過soap客戶端發佈請求時出錯
- 30. 客戶端發送的請求在合成上不正確
我想給你一個更完整的答案,也許清楚什麼可能是一個誤解,但首先我需要知道你的意思是「只使用標準的POST語句作出的字符串」..特別是因爲如果它是一個網頁,如果你沒有明確地在你的代碼中放入一個,瀏覽器會爲你填寫一個'
現在更新了答案,我知道我們正在處理iOS客戶端。用你試過的一些東西來更新你的問題將有助於@ Kul-Tigin,我會回答你的問題。 – AnonJr 2012-03-20 23:09:51