2014-09-29 2 views
-1

Я работаю над сценарием asp на стороне сервера. Он должен получать поток xml из веб-приложения и сохранять его в XML-файле. Проблема в том, что я не смог прочитать этот поток. Я использовал разные методы, и я не могу найти правильный. Еще одна вещь для тестирования. Я использую консоль для отдыха для Chrome и, похоже, работает без проблем, но когда мой клиент отправляет поток, я не могу его прочитать, и они получают ошибку кода 500.Извлечение данных из httprequest

сначала я попытался чтении поток в двоичном режиме с последующим превращением его

function readContent() 
    dim a,b 
    a=Request.TotalBytes 
    b=Request.BinaryRead(a) 
    writeInLogFile(" ") 
    writeInLogFile(Time & Request.ServerVariables("ALL_RAW")) 
    writeInLogFile(Time & " Data read in binary mode with a size of " & a) 
    readContent = URLDecode(BytesToStr(b)) 
    writeInLogFile(Time & " the length of the converted string is : "& len(readContent)) 
end function 

, но вот что я получаю на мой лог-файл

17:12:10Content-Length: 8416 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
Authorization: Basic 
Host: 
User-Agent: Jakarta Commons-HttpClient/2.0.2 

17:12:10 Data read in binary mode with a size of 8416 

17:12:10 Converting binary to string

, а затем он падает, когда я пытаюсь написать преобразованный строка

затем я перешел на Request.Form

function readContent() 
    'writeInLogFile(Time & " " & URLDecode(Request.Form)) 
    writeInLogFile(Time & Request.ServerVariables("ALL_RAW")) 
    readContent = URLDecode(Request.Form) 
    writeInLogFile(Time & " the length of the converted string is : "& len(readContent)) 
end function 

но еще раз при тестировании через консоль отдыха все работает, и когда вы действительно получаете поток от моего клиента, он просто падает.

Любой сталкивался с подобной проблемой, или есть идея, как я могу решить эту вещь

заранее спасибо

обновление:

здесь функция декодирования

FUNCTION URLDecode(str) 
    '// This function: 
    '// - decodes any utf-8 encoded characters into unicode characters eg. (%C3%A5 = å) 
    '// - replaces any plus sign separators with a space character 
    '// 
    '// IMPORTANT: 
    '// Your webpage must use the UTF-8 character set. Easiest method is to use this META tag: 
    '// <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    '// 
    Dim objScript 
    Set objScript = Server.CreateObject("ScriptControl") 
    objScript.Language = "JavaScript" 
    URLDecode = objScript.Eval("decodeURIComponent(""" & str & """.replace(/\+/g,"" ""))") 
    Set objScript = NOTHING 
    'writeInLogFile(Time & " the length of the converted string is : "& len(URLDecode)) 
END FUNCTION 
+0

У вас отсутствует соответствующий код, как выглядит источник для этих двух функций? 'URLDecode (BytesToStr (б))'. Но, глядя на то, что вы пытаетесь сделать, я бы сказал, что проблема в функции 'URLDecode()'. – Lankymart

+0

Нет никакой ошибки в функции URLDecode(), как я сказал при локальном тестировании (Rest console), все работает плавно, и функция работает отлично. – bibo

+0

Угадайте, тогда нет проблем, вы, очевидно, знаете, что делаете. Удачи. – Lankymart

ответ

0

Кодировка, которую клиент сказал, будет отправлена, не совпадает с фактическим отправлением потоком.

Request.Form - это ответ.

Смежные вопросы