Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP/1/1 400使用套接字保持活动连接中的错误请求_Http_Tcp - Fatal编程技术网

HTTP/1/1 400使用套接字保持活动连接中的错误请求

HTTP/1/1 400使用套接字保持活动连接中的错误请求,http,tcp,Http,Tcp,嗨,我从服务器上得到这个错误。这是使用隧道与外部IP的TCP套接字连接。我们从源IP向目标服务器IP端口发送请求。这是提供给我们的关于如何连接的信息 您的软件从客户端平台打开一个套接字以连接我们的服务器平台。 我们的服务器将通过启动“保持活动”对话框进行响应。 您的软件将发送一个X12传输数据包,其中包含一个合格请求。 我们的服务器将检查收件人的信息,并发送响应以允许或拒绝该资格 这是我的客户端代码,用于连接、发送和接收消息。有一件事我不确定。我做HTTP Post的方式。 他们给了我们一个样品

嗨,我从服务器上得到这个错误。这是使用隧道与外部IP的TCP套接字连接。我们从源IP向目标服务器IP端口发送请求。这是提供给我们的关于如何连接的信息

您的软件从客户端平台打开一个套接字以连接我们的服务器平台。 我们的服务器将通过启动“保持活动”对话框进行响应。 您的软件将发送一个X12传输数据包,其中包含一个合格请求。 我们的服务器将检查收件人的信息,并发送响应以允许或拒绝该资格 这是我的客户端代码,用于连接、发送和接收消息。有一件事我不确定。我做HTTP Post的方式。 他们给了我们一个样品要求。这就是它的样子

POST /OKMMISPOS HTTP/5.1
Content-Length: 521

ISA*00*__________*00*__________*ZZ*500000330______*ZZ*731476619______*090303*1414*U*004
-------这是消息的X12内容-----------------

   private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //create a new client socket ...
                string szIPSelected = "127.0.0.1";
                int szPort = 57000;
                if (textBox1.Text != "")
                    szIPSelected = textBox1.Text;
                if (textBox2.Text != "")
                    szPort = Int32.Parse(textBox2.Text);
                m_socClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


                System.Net.IPAddress remoteIPAddress = System.Net.IPAddress.Parse(szIPSelected);
                System.Net.IPEndPoint remoteEndPoint = new System.Net.IPEndPoint(remoteIPAddress, szPort);
                m_socClient.Connect(remoteEndPoint);
                if (m_socClient.Connected)
                {
                    toolStripStatusLabel1.Text = "Connected to " + szIPSelected + ":" + szPort;
                    statusStrip1.Refresh();
                    SendRequest(m_socClient);
                    toolStripStatusLabel1.Text = "Sending  Request to  " + szIPSelected + ":" + szPort;
                    statusStrip1.Refresh();
                }
                Thread.Sleep(3000);

                byte[] bytes = new byte[1024];
                int bytesRec = m_socClient.Receive(bytes);
                txtResponse271.Text =
                       Encoding.ASCII.GetString(bytes, 0, bytesRec);


            }
            catch (SocketException se)
            {
                MessageBox.Show(se.Message);
            }

        }
        private void SendRequest(Socket m_socClient)
        {

            string resource = "/OKMMISPOS";
            var header = String.Format("POST {0} HTTP/1.1\r\n", resource);
            String body = Query270;
            byte[] bodyBytes = Encoding.ASCII.GetBytes(body);
            header += "Content-Length: " + (body.Length + 1)+ "\r\n" + "\r\n";
            string request = String.Concat(header,body);
            textBox3.Text = request;
            textBox3.Refresh();
            byte[] requestBytes= Encoding.ASCII.GetBytes(request);
            m_socClient.Send(requestBytes);
        }
我的代码发送一个类似于他们的请求,但我收到一个HTTP 400错误请求。在wireshark上,请求使用TCP协议启动。这是wireshark的截图。HTTP 400。 也不确定这是否是imp,请求以TCP启动,响应以HTTP返回 要求

回应

是的,他们要求使用HTTP 5.1。所以我把这个字符串硬编码了。请参阅SendRequestsocket方法。Query270是一个简单的字符串。像这样ISA*00*00 ZZ*500000355*ZZ*734476619*130716*2207*^*00501*577840582*0*T:~GSHS*500000355*734476619*20130716*2207*088605*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*635096092580180604*20130716您的SendRequestsocket方法当前使用HTTP/1.1。需要5.1是一个非常糟糕的体系结构,因为代理经常会在这上面呕吐。另外,请注意,真正的web服务器需要主机头。主机头可能是问题所在。将所需的headerPOST/OKMMISPOS HTTP/5.1 Content Length:bodybytes.Length分配给变量并连接正文是否正确。还是应该使用HTTPWebrequest类?。最后一个字符串“request”看起来像POST/OKMMISPOS HTTP/5.1 Content Length:bodybytes.Length/r/n/r/n我已经编辑了屏幕截图。这是serverlet我们的回应