1

guy I am working on an api where I have to send request to a server xml based using soap request but the server is showing me following error: The remote server returned an error: (500) Internal Server Error , Help would be strongly appreciated

My code is like this :

   Dim s = ""
    s = s & "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbCrLf

    s = s & "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">" & vbCrLf

    s = s & "<soapenv:Body>" & vbCrLf

    s = s & "<OTA_AirLowFareSearchRQ EchoToken=""0"" SequenceNmbr=""0"" TransactionIdentifier=""0"" AvailableFlightsOnly="""" DirectFlightsOnly="""" xmlns=""http://www.opentravel.org/OTA/2003/05"">" & vbCrLf
    s = s & "<POS xmlns=""http://www.opentravel.org/OTA/2003/05"">" & vbCrLf
    s = s & "<Source AgentSine="""" PseudoCityCode="""" TerminalID=""1"">" & vbCrLf
    s = s & "<RequestorID ID=""AFFILIATE""/>" & vbCrLf
    s = s & "</Source>" & vbCrLf



    s = s & "<YatraRequests>" & vbCrLf
    s = s & "<YatraRequest DoNotHitCache=""false"" DoNotCache=""false"" YatraRequestTypeCode=""SMPA"" Description="""" MidOfficeAgentID=""28737"" AffiliateID=""TRAVELPARTNER"" />" & vbCrLf
    s = s & "</YatraRequests>" & vbCrLf
    s = s & "</POS>" & vbCrLf
    s = s & "<TravelerInfoSummary>" & vbCrLf
    s = s & "<AirTravelerAvail>" & vbCrLf
    s = s & "<PassengerTypeQuantity Code=""ADT"" Quantity=""" & drAdult.SelectedValue & """/>" & vbCrLf
    s = s & "<PassengerTypeQuantity Code=""CHD"" Quantity=""" & drpChil.SelectedValue & """/>" & vbCrLf
    s = s & "<PassengerTypeQuantity Code=""INF"" Quantity=""" & drpInfant.SelectedValue & """/>" & vbCrLf

    s = s & "</AirTravelerAvail>" & vbCrLf
    s = s & "</TravelerInfoSummary>" & vbCrLf
    s = s & "<SpecificFlightInfo>" & vbCrLf
    s = s & "<Airline Code=""""/>" & vbCrLf
    s = s & "</SpecificFlightInfo>" & vbCrLf
    s = s & "<OriginDestinationInformation>" & vbCrLf
    s = s & "<DepartureDateTime>" & txtDeparture.Text & "</DepartureDateTime>" & vbCrLf
    s = s & "<OriginLocation CodeContext=""IATA"" LocationCode=""" & drpFrom.SelectedValue & """>" & drpFrom.SelectedValue & "</OriginLocation>" & vbCrLf
    s = s & "<DestinationLocation CodeContext=""IATA"" LocationCode=""" & drpTo.SelectedValue & """>" & drpTo.SelectedValue & "</DestinationLocation>" & vbCrLf
    s = s & "</OriginDestinationInformation>" & vbCrLf
    s = s & "<TravelPreferences>" & vbCrLf
    s = s & "<VendorPref Code=""SG""/>" & vbCrLf
    s = s & "<VendorPref Code=""DN""/>" & vbCrLf
    s = s & "<CabinPref Cabin=""" & drpClass.SelectedValue & """/>" & vbCrLf
    s = s & "</TravelPreferences>" & vbCrLf
    s = s & "</OTA_AirLowFareSearchRQ>" & vbCrLf
    s = s & "</soapenv:Body>" & vbCrLf
    s = s & "</soapenv:Envelope>" & vbCrLf

    Dim url = "http://203.189.91.127:9090/services/spm/spm"

    Dim doc As New XmlDocument()

    doc.LoadXml(s)

    Dim req As HttpWebRequest = WebRequest.Create(url)
    req.Headers.Add("SOAPAction", "")

    req.ContentType = "text/xml;charset=""utf-8"""
    req.Accept = "text/xml"
    req.Method = "POST"
    Dim stm As Stream = req.GetRequestStream()
    doc.Save(stm)
    stm.Close()
    Dim resp As WebResponse = req.GetResponse()
    stm = resp.GetResponseStream()
    Dim r As StreamReader = New StreamReader(stm)
    'process SOAP return doc here. For now, we'll just send the XML out to the browser ...
    Response.Write(r.ReadToEnd())
Asif Rashid
  • 15
  • 1
  • 4
  • As answered below, the 500 means there is a bug in the code on their side. If your request was invalid in some way, the SOAP server should have responded with a SOAP fault message. Now that isn't to say that there isn't something in your request that triggered the bug on their side.... – Erik Nedwidek Jan 18 '13 at 18:49

3 Answers3

1

HTTP Error code 500, as it says, is an internal server error. Your contact will probably need to view his logs and report back with what the error is to you since it is on his end and not yours.

In the chance that your request format doesn't match his expected format and throws errors it needs to be properly handled on his end instead of reporting error 500.

So.... basically its out of your hands.

Grambot
  • 4,057
  • 4
  • 26
  • 42
0

Getting an window's application logs will be helpful. Go to Start - > run -> event viewer (click enter) -> windows logs -> Applications -> Check the logs. Refer http://support.microsoft.com/kb/308427 for more information. Or http://www.dotnetnoob.com/2012/03/iis-500-errors-leave-clues-in-log.html

Andy
  • 191
  • 1
  • 9
0

Comment first this things

's = ?xml version=""1.0"" encoding=""UTF-8""?"

then add this code its work fine i try

        Dim Parameters As String = GetRq()
        Dim request As WebRequest = WebRequest.Create(url)
        request.Credentials = CredentialCache.DefaultNetworkCredentials
        request.ContentType = "application/x-www-form-urlencoded"
        request.Method = "POST"
        request.Headers.Add("SOAPAction", url)
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(Parameters)
        request.ContentType = "text/xml"

        request.ContentLength = byteArray.Length

        Dim dataStream As Stream = request.GetRequestStream()
        dataStream.Write(byteArray, 0, byteArray.Length)
        dataStream.Close()

        Dim response As WebResponse = request.GetResponse()
        dataStream = response.GetResponseStream()

        Dim reader As New StreamReader(dataStream)
        Dim responseFromServer As String = reader.ReadToEnd()

        reader.Close()
        dataStream.Close()
        response.Close()

Thanks

Umaji Mogre