現在負責一個系統,客戶端通過java程式網服務器端發送xml格式的檔案,一切正常;
原理上是這樣子的,儀器生成一個XML 檔案,然后客戶端的java軟體去讀取,然后用stream上傳。
現在,客戶端要改造,改用VB程式發送,調了兩天,http請求格式等各種問題都解決了,但是又冒出了后臺XML決議的問題:
unexpected element (uri:"", local:"INSTRUMENT_ID"). Expected elements are <{}CHECK_RECORD>,<{}sample>,<{}samples>
看來看去都找不到問題,通過httpwatch等工具查看java和VB post的資料發現內容是一樣的,完全找不出什么區別。
然后用winhex看了十六進制資料,發現有若干個地方不一樣,但那些十六進制資料又不太明白。。。。
關于解決的思路,應該不是對后臺的java程式做什么調整,因為客戶端用java程式還是照樣能正常發送,
哪位大俠有過類似經歷請幫個忙!
以下是java代碼:
String webserivceURL = ClientConfigurationUtil.getValue(WEBSERVICE_URL);
String dataFormat = ClientConfigurationUtil.getValue(DATA_FORMAT);
logger.debug("webserivceURL = " + webserivceURL);
Client client = Client.create();
WebResource webResource = client.resource(webserivceURL);
FormDataMultiPart formDataMultiPart = new FormDataMultiPart();
formDataMultiPart.bodyPart(new FileDataBodyPart("file", dataFile, MediaType.APPLICATION_OCTET_STREAM_TYPE));
formDataMultiPart.field(DATA_FORMAT, dataFormat);
ClientResponse response = webResource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(ClientResponse.class, formDataMultiPart);
formDataMultiPart.close();
以下是VB代碼:
Private Sub pvPostFile(sUrl As String, sFileName As String, sPath As String, Optional ByVal bAsync As Boolean)
Const STR_BOUNDARY As String = "3fbd04f5-b1ed-4060-99b9-fca7ff59c113"
Dim nFile As Integer
Dim baBuffer() As Byte
Dim sPostData As String
'--- read file
nFile = FreeFile
Open sPath For Binary Access Read As nFile
If LOF(nFile) > 0 Then
ReDim baBuffer(0 To LOF(nFile) - 1) As Byte
Get nFile, , baBuffer
sPostData = StrConv(baBuffer, vbUnicode)
MsgBox sPostData
End If
Close nFile
'--- prepare body
sPostData = "--" & STR_BOUNDARY & vbCrLf & _
"Content-Type: application/octet-stream" & vbCrLf & _
"Content-Disposition: form-data; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & """; name=""file"" " & vbCrLf & _
sPostData & vbCrLf & _
"--" & STR_BOUNDARY & vbCrLf & _
"Content-Type: text/plain" & vbCrLf & _
"Content-Disposition: form-data; name=""dataFormat""" & vbCrLf & vbCrLf & _
"hk" & vbCrLf & _
"--" & STR_BOUNDARY & "--"
'--- post
With CreateObject("Microsoft.XMLHTTP")
.Open "POST", sUrl, bAsync
.SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
.Send pvToByteArray(sPostData)
End With
MsgBox "發送完畢"
求助!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/123894.html
標籤:VB基礎類
上一篇:excel宏有關字串提取
