«Опубликовать» данные XML, такие как HTML, со скрытыми значениями, используя ContentType = «txt / html» - PullRequest
0 голосов
/ 25 февраля 2010

Я хочу сделать то же самое, что раньше работало с HTML, но теперь через .NET Windows Forms.

Когда я отправляю этот HTML, он работает:

<html>
<head>
</head>
<body> 
<form name="TestForm" action="http://staging.csatravelprotection.com/ws/policyrequest" method="POST">
<input type="hidden" name="xmlrequeststring" value=" 
<quoterequest>
  <aff>COSTAMAR</aff> <!-- required -->
  <producer>10527930</producer> <!-- optional -->
  <productclass>85FL</productclass>  <!-- required -->
  <bookingreservno>0123456789AB</bookingreservno>  <!-- optional -->
  <numinsured>3</numinsured>  <!-- required -->
  <tripcost>5000.00</tripcost>  <!-- required -->
  <departdate>2010-11-01</departdate>  <!-- required -->
  <returndate>2010-11-20</returndate>  <!-- required -->
  <triptype>Cruise</triptype> <!-- optional -->
  <destination>Europe/ Mediterranean</destination>  <!-- required -->
  <supplier>Carnival Cruise Lines</supplier>  <!-- optional -->
  <airline>American</airline>  <!-- optional-->
  <travelers>
    <traveler>
      <age>45</age>  <!-- required -->
    </traveler>
    <traveler>
      <age>43</age>  <!-- required -->
    </traveler>
    <traveler>
      <age>15</age>  <!-- required -->
    </traveler>
  </travelers>
</quoterequest> 
">

<input type="submit" name="submit" value="submit">
</form> 
</body>
</html>

, но когда я пытаюсь отправить XML через POST с использованием .NET, происходит сбой, потому что я не знаю, как отправить через скрытый ввод по URI.

Imports System.IO
Imports System.Text
Imports System.Net
Public Class Form2
    Private Shared URL As String = "http://staging.csatravelprotection.com/ws/policyrequest"
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim oHttpWebRequest As WebRequest = WebRequest.Create(New Uri(URL))
        oHttpWebRequest.Method = "POST"
        oHttpWebRequest.ContentType = "text/xml"
        Dim oStream As Stream = oHttpWebRequest.GetRequestStream()
        Dim Reader As StreamReader = New StreamReader("C:\TEST.XML", Encoding.Default)
        Dim Postdata As String = String.Format("xmlrequeststring={0}", Reader.ReadToEnd)
        oStream.Write(Encoding.ASCII.GetBytes(Postdata), 0, Postdata.Length)
        oStream.Close()
        Dim oHttpWebResponse As HttpWebResponse = CType(oHttpWebRequest.GetResponse(), HttpWebResponse)
        Dim oStreamResponse As Stream = oHttpWebResponse.GetResponseStream()
        Dim oStreamRead As StreamReader = New StreamReader(oStreamResponse, Encoding.UTF8)
        Dim strReturnedXML As String = oStreamRead.ReadToEnd()

        MessageBox.Show(strReturnedXML)
        oStreamResponse.Close()
        oStreamRead.Close()
        oHttpWebResponse.Close()
    End Sub
End Class

XML:

<quoterequest>
  <aff>COSTAMAR</aff> 
  <producer>10527930</producer>
  <productclass>TBD</productclass>
  <bookingreservno>0123456789AB</bookingreservno> 
  <numinsured>3</numinsured>  
  <tripcost>5000.00</tripcost> 
  <departdate>2009-11-01</departdate>
  <returndate>2009-11-20</returndate>
  <initdate>2008-09-30</initdate>
  <finalpaymentdate>2008-10-30</finalpaymentdate> 
  <triptype>Cruise</triptype>
  <destination>Europe/ Mediterranean</destination> 
  <supplier>Carnival Cruise Lines</supplier>
  <airline>American</airline>
</quoterequest>

Есть ли способ заставить его работать как положено в .NET?

Спасибо

Ответы [ 2 ]

1 голос
/ 04 марта 2010

Это возможно, но вы должны публиковать не только данные XML, но и исходный файл HTML со встроенными данными XML.Het получение страницы ожидает данные в этой форме.Он не может / не видит разницы между публикацией в браузере или вашей программой.

Возможно, они имеют другую форму URL для публикации данных в формате XML.

MarcelDevG

0 голосов
/ 26 февраля 2010

Это невозможно, но вы можете работать с POST, используя ContentType = "txt / xml"

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