views:

316

answers:

2

Hello people, I want to do the same that works previously on HTML but now via .NET Windows Forms.

When I submit this HTML it works :

<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>

but when I try to send the XML via POST using .NET it appear to fail cause I dont know how to post via Hidden Input on the 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>

Is there a way to make it work as expected on .NET?

Thanks

A: 

Thats impossible, but you can work with POST using ContentType ="txt/xml"

Eugene
+1  A: 

It is possible, but you should not post only the xml data, but the original html file with your xml data embedded. Het recieving page expects the data in that form. It cannot/does not see the difference between a browser or your program posting.

It could be that they have a different url form posting xml format data.

MarcelDevG

MarcelDevG