2015-01-14 5 views
0

multipart/form-data를 사용하여 서버에 데이터를 게시하려했지만 서버가 아무 것도 수신하지 못하는 것 같습니다.서버가 멀티 파트/폼 데이터 포스트 데이터를받지 못하는 이유

VB 코드

' create a boundary consisting of a random string 
strBoundary = RandomAlphaNumString(32) 

strBody = "--" & strBoundary & vbCrLf 
strBody = strBody & "Content-Disposition: form-data; name=""test1""" & vbCrLf & vbCrLf & STRING 
strBody = strBody & vbCrLf & "--" & strBoundary & vbCrLf 
strBody = strBody & "Content-Disposition: form-data; name=""data""" & vbCrLf & vbCrLf & data 
strBody = strBody & vbCrLf & "--" & strBoundary & vbCrLf 
strBody = strBody & "Content-Disposition: form-data; name=""data2""" & vbCrLf & vbCrLf & data2 
strBody = strBody & vbCrLf & "--" & strBoundary & vbCrLf 
strBody = strBody & "Content-Disposition: form-data; name=""data3""" & vbCrLf & vbCrLf & data3 
strBody = strBody & vbCrLf & "--" & strBoundary & "--" 

' Content-Length 
sHttpLength = Len(strBody) 

Set WinHttpReq = New WinHttpRequest 
strURL = "https://" & HOST & URL ' directed to test.php 

hostHeader = HOST & vbCrLf 
contentTypeHeader = "multipart/form-data; boundary=" & strBoundary & vbCrLf 
contentLengthHeader = sHttpLength & vbCrLf & vbCrLf 

    WinHttpReq.Open "POST", strURL, False 'Open a Http connection 
    WinHttpReq.SetRequestHeader "HOST", hostHeader 
    WinHttpReq.SetRequestHeader "Content-Type", contentTypeHeader 
    WinHttpReq.SetRequestHeader "Content-Length", contentLengthHeader 

WinHttpReq.Send strBody ' Send Post messages 
는 그러나 그것은 게시 된 쌍

예를 인식하지 않는 비주얼 베이직 응용 프로그램에 데이터를 다시 전송으로 서버가 요청을 수신

$postedVal = isset($_POST["test1"]) ? $_POST["test1"] : ''; 

이 데이터가 정확하게 수신되지 않았 음을 보여주는 '반환합니다.

내가 볼 수없는 주요 결함이 있습니까?

조언이 도움이 될 것입니다.

답변

0

Content-Type 헤더에 Charset을 지정하지 않으면 헤더의 끝에 UTF-8이 자동으로 할당됩니다. 게시 된 메시지가 작동하지 않습니다! 해답은 경계 바로 앞에 Charset을 수동으로 입력하십시오. 이제는 잘 작동합니다 ... 힘든 오류로 경계를 계속 확인하십시오!

예.

contentTypeHeader = "multipart/form-data;Charset=UTF-8; boundary=" & strBoundary & vbCrLf