Call WebService using HTTPWebRequest object

Discussion in 'ASP .Net' started by hharry, Dec 11, 2005.

  1. hharry

    hharry Guest

    Hi All,


    I have a simple web service:


    <WebMethod()> _
    Public Function ReSample(ByVal sInput As Integer) As String


    Return sInput * 5


    End Function


    I am trying to call this service from a second service by sending a
    soap message using the HTTPWebRequest object.


    Public Function CallReSample(ByVal y As Integer) As String


    Dim SoapEnv As String = ""
    Dim url As String =
    "http://localhost/AcxiomRequest/Service1.asmx/ReSample"
    Dim result As String = ""
    Dim myWriter As StreamWriter


    SoapEnv = "" & _
    "<soap:Envelope" & _
    " xmlns:xsi=" + Chr(34) +
    "http://www.w3.org/2001/XMLSchema-instance" + Chr(34) & _
    " xmlns:xsd=" + Chr(34) +
    "http://www.w3.org/2001/XMLSchema" + Chr(34) & _
    " xmlns:soap=" + Chr(34) +
    "http://schemas.xmlsoap.org/soap/envelope/" + Chr(34) + ">" & _
    " <soap:Body>" & _
    " <ReSample xmlns:m=" + Chr(34) +
    "http://tempuri.org/message/" + Chr(34) + ">" & _
    "<sInput>50</sInput>" & _
    " </ReSample>" & _
    " </soap:Body>" & _
    " </soap:Envelope>"


    Dim objRequest As HttpWebRequest = WebRequest.Create(url)


    If Not objRequest Is Nothing Then
    objRequest.Method = "POST"
    objRequest.ContentLength = SoapEnv.Length
    objRequest.ContentType =
    "application/x-www-form-urlencoded"


    objRequest.Headers.Add("SOAPAction", "ReSample")


    myWriter = New StreamWriter(objRequest.GetRequestStream())
    myWriter.Write(SoapEnv)


    If Not myWriter Is Nothing Then
    myWriter.Close()
    End If


    Dim objResponse As HttpWebResponse
    Dim esr As StreamReader


    Try
    objResponse = objRequest.GetResponse()
    Catch ex As WebException 'Exception
    esr = New StreamReader(ex.Response.GetResponseStream())

    result = esr.ReadToEnd()
    Catch ex As Exception


    End Try


    Dim sr As StreamReader
    sr = New StreamReader(objResponse.GetResponseStream())
    result = sr.ReadToEnd()
    sr.Close()


    objResponse.Close()
    sr.Close()
    objResponse = Nothing
    sr = Nothing
    objRequest.Abort()
    End If


    objRequest = Nothing
    myWriter = Nothing


    End Function


    ////////////////////////////////////////////////////////////////////////



    I keep getting the following error:


    System.InvalidOperationException: Missing parameter: sInput.


    I'm not sure how to include a parameter in the soap envelope.


    Pointers appreciated


    Thanks in advance!
    hharry, Dec 11, 2005
    #1
    1. Advertising

  2. hharry

    Guest

    Your return datatype is STRING in "Public Function ReSample(ByVal
    sInput As Integer) As String "
    May be you need to explicitly conver the type within the code "Return
    sInput * 5 "
    , Dec 11, 2005
    #2
    1. Advertising

  3. hharry

    hharry Guest

    Thanks.

    I changed my web method to:

    <WebMethod()> _
    Public Function ReSample(ByVal sInput As String) As String

    Return sInput

    End Function

    So, I would expect the service to return the string "50", but still
    getting the missing parameter exception.
    I'm sure there is something missing from my soap envelope string.
    hharry, Dec 11, 2005
    #3
  4. hharry

    Jarod Guest

    > So, I would expect the service to return the string "50", but still
    > getting the missing parameter exception.
    > I'm sure there is something missing from my soap envelope string.
    >


    Go to your webservice address through browser or in debug mode you have some
    test site that presents you SOAP request that you should use, just copy it.
    For example http://localhost/yourwebservice/thisservice.asmx and put it in
    the browser.
    Jarod
    Jarod, Dec 11, 2005
    #4
  5. hharry

    hharry Guest

    Thanks Jarod.

    This pointed me in the right direction. My namespace was incorrect and
    the content-type should have been "text/xml; charset=utf-8" as opposed
    to "application/x-www-form-urlencoded".
    hharry, Dec 12, 2005
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Chris  Ashley

    HttpWebRequest CGI Call Timing Out?

    Chris Ashley, Nov 7, 2005, in forum: ASP .Net
    Replies:
    1
    Views:
    544
    Joerg Jooss
    Nov 7, 2005
  2. Cyril
    Replies:
    2
    Views:
    4,500
    Cyril
    Jun 1, 2006
  3. LarryKuperman
    Replies:
    2
    Views:
    667
    LarryKuperman
    May 13, 2008
  4. hharry

    Call Web Service using HTTPWebRequest

    hharry, Dec 9, 2005, in forum: ASP .Net Web Services
    Replies:
    1
    Views:
    385
    hharry
    Dec 12, 2005
  5. René Preußler

    Asynchronous Call of WebService method within a WebService

    René Preußler, Oct 29, 2008, in forum: ASP .Net Web Services
    Replies:
    0
    Views:
    196
    René Preußler
    Oct 29, 2008
Loading...

Share This Page