делаю это с помощью WinHTTP следующим образом:
в VB
- Код: Выделить всё
Set oStream = New ADODB.Stream
Set RS = New ADODB.Recordset
RS.Fields.Append "id", adInteger
RS.Fields.Append "date", adDate
RS.Fields.Append "title", adVarChar, Len(txtTitle)
RS.Fields.Append "preview", adLongVarChar, Len(txtPreview)
RS.Fields.Append "fulltext", adLongVarChar, Len(txtFullNew)
RS.Open
RS.AddNew
RS("id").Value = txtID
RS("date").Value = txtDate
RS("title").Value = txtTitle
RS("preview").Value = txtPreview
RS("fulltext").Value = txtFullNew
oStream.Open
oStream.Type = adTypeText
oStream.Position = 0
' oStream.Charset = "UTF-8" ' на утф не работает, оставлю по умолчанию
str = ""
'str = "<?xml version='1.0'?>" & vbNewLine
RS.Save oStream, adPersistXML
oStream.Position = 0
str = str & oStream.ReadText
HTTP.Open "POST", ConnectionStr & "?cmd=updatenews¶m1=" & str, False
HTTP.Send
в ASP
- Код: Выделить всё
...
param1 = Request("param1")
updatenews param1
...
sub UpdateNews (RS_XML)
dim SQL
dim oStream : set oStream = Server.CreateObject("ADODB.Stream")
oStream.Open
oStream.Charset = "windows-1251"
oStream.WriteText RS_XML
oStream.Position = 0
RS.Open oStream ' вот тут вылетает ошибка описанная ниже, и position устанавливается на последний символ.
SQL = "UPDATE * FROM News WHERE [id]=?"
cmd.ActiveConnection = adoConn
cmd.CommandText = SQL
cmd.Parameters.Append cmd.CreateParameter("id", adVarChar, adParamInput, 15, RS("id"))
cmd.Execute rc, , adCmdText or adExecuteNoRecords
if rc = 0 then
Response.Write "NO"
else
Response.Write "OK"
end if
end sub
при этом вылезает вот такая ошибка (выдает отладчик ASP страниц):
Microsoft OLEDB Persistence Provider: Не удается прочитать объект Stream, так как он пуст или текущая позиция находится в конце потока. Для непустых объектов задайте текущую позицию с помощью свойства Position. Определите, является ли объект пустым, с помощью свойства Size.
при этом oStream.size = 1428
a oStream.readtext = "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'xmlns:rs='urn:schemas-microsoft-com:rowset'xmlns:z='#RowsetSchema'><s:Schema id='RowsetSchema'><s:ElementType name='row' content='eltOnly' rs:updatable='true'><s:AttributeType name='id' rs:number='1' rs:write='true'><s:datatype dt:type='int' dt:maxLength='4' rs:precision='0' rs:fixedlength='true' rs:maybenull='false'/></s:AttributeType><s:AttributeType name='date' rs:number='2' rs:write='true'><s:datatype dt:type='dateTime' rs:dbtype='variantdate' dt:maxLength='16' rs:precision='0' rs:fixedlength='true' rs:maybenull='false'/></s:AttributeType><s:AttributeType name='title' rs:number='3' rs:write='true'><s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='6' rs:precision='0' rs:maybenull='false'/></s:AttributeType><s:AttributeType name='preview' rs:number='4' rs:write='true'><s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='7' rs:precision='0' rs:long='true' rs:maybenull='false'/></s:AttributeType><s:AttributeType name='fulltext' rs:number='5' rs:write='true'><s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='6' rs:precision='0' rs:long='true' rs:maybenull='false'/></s:AttributeType><s:extends type='rs:rowbase'/></s:ElementType></s:Schema><rs:data><rs:insert><z:row id='11' date='2334-12-12T00:00:00' title='aaajjj' preview='bbbhhhh' fulltext='dddbbb'/></rs:insert></rs:data></xml>"