Не удается прочитать значение Request.form () после миграции на новый сервер - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть веб-API.Я вызываю этот API из моего приложения для Android, приложения для Windows, а также из устройства Fibocom G510 Hand Held Terminal.Все работало нормально, пока мой сервер не изменился.После миграции сервера я не получаю результаты.Вот мой код приложения vb.net для windows, который вызывает API.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim iRemoteUrl As String
    Dim iDataPart As String
    Dim iEncoding As ASCIIEncoding = New ASCIIEncoding

    Dim iData As String

    Dim iBytes() As Byte
    Dim iHttpRequest As HttpWebRequest
    Dim iStream As IO.Stream
    Dim iResponse As WebResponse
    Dim iReader As StreamReader
    Dim iResponseFromServer As String

    Try
        iRemoteUrl = "http://demo.bmatestore.com/TAPI/Test.aspx"
        iDataPart = "hadcaaz.asz|mambbkmrmaumjmamrvmwmbsmrkmcmwqmxnmkmzmmlmbmmmpmamwmbhcz|tashz|arasiarauz|tasz|astz|aaz|aswz|msfmambmeysmfz~aaaraxaaaraxz~auasasdgmkasasaxaayodlasjaslarauksgasasasyaskj"
        iData = String.Format("DataPart={0}", iDataPart)
        iBytes = iEncoding.GetBytes(iData)

        iHttpRequest = CType(WebRequest.Create(iRemoteUrl), HttpWebRequest)

        iHttpRequest.Method = "POST"
        iHttpRequest.ContentType = "application/x-www-form-urlencoded"
        iHttpRequest.ContentLength = iBytes.Length()
        iStream = iHttpRequest.GetRequestStream
        iStream.Write(iBytes, 0, iBytes.Length)
        iStream.Close()

        iResponse = iHttpRequest.GetResponse()
        iStream = iResponse.GetResponseStream()
        iReader = New StreamReader(iStream)
        iResponseFromServer = iReader.ReadToEnd()

        MsgBox(iResponseFromServer)

        iReader.Close()
        iStream.Close()
        iResponse.Close()
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
End Sub

В моем WebAPI у меня есть следующий код.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me. Load
    Dim iData As String
    Dim iResult As String

    Try
        iData = Request.Form("DataPart")
        If iData = "" Then
            iResult = "<message>0|0|0|2|Input data is not given</message>"
        Else
            iResult = ProcessTerminalAPI(iData, Server.MapPath("~/"), "Page")
        End If

        Response.Write(iResult)
    Catch ex As Exception
    End Try
End Sub

Я всегда получаю

<message>0|0|0|2|Input data is not given</message> 

в качестве ответа.Я также понял, что если я изменю iRemoteUrl с http://demo.bmatestore.com/TAPI/Test.aspx на https://demo.bmatestore.com/TAPI/Test.aspx, он будет работать нормально.Но я хочу, чтобы это работало и в HTTP.Это связано с тем, что, как я упоминал ранее, этот API будет использоваться Fibocom G510 Hand Held Terminal, который не может подключиться, когда HTTPS используется в их коде.Он может подключаться при использовании HTTP, но, к сожалению, не дает должного результата.Пожалуйста, помогите, если кто-нибудь сталкивался с такой ситуацией.

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