我用winsock发送HTTP 请求,代码如下:
strsenddata = "areaType=2&areaId=12&zwId=7&alarmContent=告警内容"
strsendHeader = "POST /mas-npsw/alarm/send.action  HTTP/1.1" & vbCrLf
strsendHeader = strsendHeader + "Host: 10.35.18.93:8080" + vbCrLf
strsendHeader = strsendHeader & "Content-Type: application/x-www-form-urlencoded " & vbCrLf
strsendHeader = strsendHeader + "Accept: */*" + vbCrLf
strsendHeader = strsendHeader + "User-Agent: post" + vbCrLf
strsendHeader = strsendHeader + "Connection: Keep-Alive" + vbCrLf
strsendHeader = strsendHeader & "Content-Length:" & Len(strsenddata) & vbCrLf
  If Winsock1.State <> sckClosed Then
        Winsock1.Close
  End If
  Winsock1.Protocol = sckTCPProtocol
  Winsock1.Connect "10.35.18.93", 8080
  Do Until Winsock1.State = sckConnected
        If i < 10000 Then
              i = i + 1
              DoEvents
        Else
              If Winsock1.State <> sckClosed Then
                    Winsock1.Close
              End If
              If MsgBox("Time   Out!   Retry?", vbQuestion + vbYesNo) = vbYes Then
                    i = 0
                    Winsock1.Connect
              Else
                      Exit Sub
              End If
        End If
  Loop
strsend = strsendHeader & strsenddata
Winsock1.SendData strsend
运行上面的代码 无法收到返回信息  debug.print  winsock1.state=7   
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim sss As String
  Winsock1.GetData sss
  Text1.Text = sss
End Sub
text1里面也没有出现返回信息!用INET发送代码如下:
strsenddata = "areaType=2&areaId=12&zwId=7&alarmContent=告警内容"
strsendHeader = strsendHeader & "Content-Type: application/x-www-form-urlencoded " & vbCrLf
strsendHeader = strsendHeader & "Content-Length: " & len(strsenddata) & vbCrLf
strsendadd = "http://10.35.18.93:8080/mas-npsw/alarm/send.action"
Inet1.Execute strsendadd, "POST", strsenddata, strsendHeaderstrsenddata 
却可以发送成功。
找了很久也不知道问题出在哪里?有哪位高人指点下!

解决方案 »

  1.   

    我用winsock发送HTTP 请求,代码如下: 
    strsenddata = "areaType=2&areaId=12&zwId=7&alarmContent=告警内容" 
    strsendHeader = "POST /mas-npsw/alarm/send.action  HTTP/1.1" & vbCrLf 
    strsendHeader = strsendHeader + "Host: 10.35.18.93:8080" + vbCrLf 
    strsendHeader = strsendHeader & "Content-Type: application/x-www-form-urlencoded " & vbCrLf 
    strsendHeader = strsendHeader + "Accept: */*" + vbCrLf 
    strsendHeader = strsendHeader + "User-Agent: post" + vbCrLf 
    strsendHeader = strsendHeader + "Connection: Keep-Alive" + vbCrLf 
    strsendHeader = strsendHeader & "Content-Length:" & Len(strsenddata) & vbCrLf 这个头部最后是两个VbCrlf 还是三个  忘记了。。-_-
    你多加一两个试试
    但绝对不是一个
      

  2.   

    头部后面加了个VbCrlf, Winsock1_DataArrival事件返回提示: 
    HTTP/1.1 505 HTTP Version Not Supported
    Server: Apache-Coyote/1.1
    Date: Tue, 29 Jul 2008 03:37:43 GMT
    Connection: close
      

  3.   

    改为:
    strsendHeader = strsendHeader & "Content-Length:" & Len(strsenddata) & vbCrLf 
    strsendHeader = strsendHeader & "Content-Length:" & Len(strsenddata) & vbCrLf & vbCrLf 参见:http://topic.csdn.net/u/20071210/09/3f8e8d05-c235-4367-98cf-4529c0a80d80.html