Goeiemiddag,
Ik ben bezig om een SOAP request te zenden en de response ervan in een dataset te krijgen.
Ik krijg een response van de request maar volgens mij klopt deze niet helemaal. Ik krijg namelijk nog wat extra tekst mee die ik eigenlijk niet wil waardoor naar mijn idee het vullen van de dataset misloopt.
Mijn request code is als volgt:
(Ik heb een paar url's weggelaten omdat ik ze niet kan geven)
Wanneer ik dit uitvoer krijg ik een foutmelding:
Ik heb de code geprobeerd zonder heel het dataset gebeuren. Wat ik dan doe is het volgende:
Het volgende krijg ik dan terug (ik kan niet de hele xml geven omdat er dingen instaan die ik verder niet wil geven
Maar volgens mij hoor ik bovenstaande gegevens toch niet te krijgen (de code boven en onder *XML code*)? Kan het daarom zijn dat ik een melding krijg dat gegevens op hoofdniveau ongeldig zijn? Zoja, wat doe ik fout en hoe krijg ik puur alleen de XML code zonder headers.
Ik ben bezig om een SOAP request te zenden en de response ervan in een dataset te krijgen.
Ik krijg een response van de request maar volgens mij klopt deze niet helemaal. Ik krijg namelijk nog wat extra tekst mee die ik eigenlijk niet wil waardoor naar mijn idee het vullen van de dataset misloopt.
Mijn request code is als volgt:
(Ik heb een paar url's weggelaten omdat ik ze niet kan geven)
Visual Basic: request.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| Dim objHTTP As New MSXML2.XMLHTTP Dim strEnvelope As String Dim objReturn As String strEnvelope = "<?xml version='1.0' encoding='UTF-8' standalone='no' ?>" & _ "<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' xmlns:ser='*URL*'>" & _ "<soap:Header/>" & _ "<soap:Body>" & _ "<ser:showOrderReport>" & _ "<queryFilter>" & _ "<dateRange rangePattern='Mm1'>" & _ "<from/>" & _ "<to/>" & _ "</dateRange>" & _ "</queryFilter>" & _ "</ser:showOrderReport>" & _ "</soap:Body>" & _ "</soap:Envelope>" objHTTP.open("POST", "", False) objHTTP.setRequestHeader("Content-Type", "application/soap+xml; charset-utf-8") objHTTP.send(strEnvelope) objReturn = objHTTP.responseText Dim dataset As DataSet = New DataSet Dim dataTable As DataTable = New DataTable("table1") dataTable.Columns.Add("resultSize", Type.GetType("System.String")) Dim xmlData As String = objReturn Dim xmlSR As System.IO.StringReader = New System.IO.StringReader(xmlData) dataset.ReadXml(xmlSR, XmlReadMode.IgnoreSchema) Return dataset |
Wanneer ik dit uitvoer krijg ik een foutmelding:
code:
1
| Gegevens op hoofdniveau zijn ongeldig. Regel 1, positie 1 |
Ik heb de code geprobeerd zonder heel het dataset gebeuren. Wat ik dan doe is het volgende:
code:
1
2
3
4
| objHTTP.open("POST", "*URL*", False) objHTTP.setRequestHeader("Content-Type", "application/soap+xml; charset-utf-8") objHTTP.send(strEnvelope) objReturn = objHTTP.responseText |
Het volgende krijg ik dan terug (ik kan niet de hele xml geven omdat er dingen instaan die ik verder niet wil geven
code:
1
2
3
| ------=_Part_0_1538168342.1300112835360 Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml"; Content-Transfer-Encoding: binary Content-ID: *XML code* ------=_Part_0_1538168342.1300112835360-- |
Maar volgens mij hoor ik bovenstaande gegevens toch niet te krijgen (de code boven en onder *XML code*)? Kan het daarom zijn dat ik een melding krijg dat gegevens op hoofdniveau ongeldig zijn? Zoja, wat doe ik fout en hoe krijg ik puur alleen de XML code zonder headers.
[ Voor 8% gewijzigd door Verwijderd op 26-03-2011 18:43 ]