在非常特定的情况下,HTTP帖子无法访问主机

时间:2016-02-16 21:20:21

标签: vb.net http-post

我公司通过HTTP POST向Ariba和Oracle Supplier Networks发送发票。我们遇到了一个问题,我们无法确定它的设置或代码。

以下是代码:

Public Function SendMime(pFiles As List(Of String)) As String
    'just use the text send option in HTTP connection
    If pFiles.Count = 1 And pFiles.Item(0).EndsWith(".xml") Then
        Return Send(My.Computer.FileSystem.ReadAllText(pFiles(0)))
    End If

    Dim Request As Net.HttpWebRequest

    Request = DirectCast(Net.WebRequest.Create(GetFirstURL()), Net.HttpWebRequest)
    Request.ContentType = "multipart/related;boundary=" & OuterBoundary & ";type=""text/xml"";start=""<" & _CID & ".1>"""
    Request.Method = "Post"
    Request.KeepAlive = True

    WriteRequest(Request, pFiles)

    Dim Response As Net.WebResponse
    Try
        Response = Request.GetResponse()
        Dim ResponseStream As Stream = Response.GetResponseStream()
        Dim ResponseReader As New StreamReader(ResponseStream)
        Return ResponseReader.ReadToEnd()
    Catch ex As System.Exception
        Return "error: " & ex.Message
    End Try
End Function

Private Sub WriteRequest(pRequest As Net.WebRequest, pFiles As List(Of String))
    Dim PartCount As Integer = 1

    _RequestStream = pRequest.GetRequestStream()
    _tempStream = New FileStream("C:\lastMIMEsent.txt", FileMode.Create)

    For Each File As String In pFiles
        WriteBoundary(OuterBoundary)
        If File.ToLower.EndsWith(".xml") Then
            GetXMLPart(File, PartCount)
        ElseIf File.ToLower.EndsWith(".pdf") Then
            GetPDFPart(File, PartCount)
        End If
        PartCount += 1
    Next

    WriteTrailer(OuterBoundary)

    _RequestStream.Close()
    _tempStream.Flush()
    _tempStream.Close()

End Sub

send函数类似于SendMime函数,但没有附件(仅限cxml)。此代码在Windows服务和基本GUI测试程序之间共享。

编辑:我得到的错误是:“无法连接到主机。”

事情变得奇怪:

  • 在运行服务的服务器上:当服务调用SendMime函数时,Oracle工作,Ariba不工作。
  • 在运行服务的服务器上:当GUI实用程序调用SendMime函数时,两者都有效。
  • 在我的工作站上:无论是调用SendMime功能的服务还是GUI,都可以正常工作
  • 我的第一个想法是代理,但两台机器都在同一代理之后。
  • 我的第二个想法是防火墙问题,但我们禁用防火墙但没有成功。
  • 我们也可以通过网络浏览器连接到该地址。
  • 我们尝试使用不同的Active Directory帐户,但也没有任何更改。
  • 服务和GUI实用程序都运行.Net 4.5(服务的某些异步部分需要)。他们不是一点,但升级实用程序没有任何区别。
  • 我能找到的唯一区别是,我的机器运行的是Windows 7,而服务器运行的是Windows Server R2,但我找不到任何文档说明应该有区别。

我一直试图解决这个问题几个星期,尝试不同的调整,此时,我和服务器团队都没有想法。任何建议,无论是我的代码中的红旗还是只是已知的Windows服务器问题,都将非常感激。

0 个答案:

没有答案