[英]How to detect Windows Mobile 5 Device Serial Number? (.NET CF 3.5)
[英]Need Help.. Picture uploader function for windows mobile 6 net cf 3.5
一切運行完美,但是讓我最后一個神經衰弱的是getstring部分..該功能很棒,但是我需要一種方法來找到getstring問題的替代方法..使用getstring(pic,0,pic.length)我成了一個錯誤..並沒有辦法尋求幫助
她的代碼:
Public Function uploadPic(ByVal pic As Byte(), ByVal filename As String, ByVal user As String)
Dim encoding As String = "iso-8859-1"
'Erzeugen einer einzigartigen identifikation
Dim gui As String = Guid.NewGuid().ToString()
'Diese wird für den Header und den footer der Daten benötigt
Dim head As String = String.Format("--{0}", gui)
Dim foot As String = String.Format("--{0}--", gui)
'Einen Stringbuilder erstellen, in dem wir nun bequem die
'benötigten POST Daten speichern können
Dim contents As StringBuilder = New StringBuilder()
'Benutzerdaten schreiben (benutzername)
contents.AppendLine(head)
contents.AppendLine(String.Format("Content-Disposition: form-data; name=""{0}""", "username"))
contents.AppendLine()
contents.AppendLine(user)
'Header schreiben
contents.AppendLine(head)
'Bildinformationen schreiben, Bildkopf und die Binärdaten
Dim fileHeader As String = String.Format("Content-Disposition: file; name=""{0}""; filename=""{1}""", "media", user & ".jpg")
Dim fileData As String = System.Text.Encoding.GetEncoding(encoding).GetString(pic)
'Informationen zu dem Übergebenen Dateityp schreiben
contents.AppendLine(fileHeader)
contents.AppendLine(String.Format("Content-Type: {0}", "image/jpeg"))
contents.AppendLine()
contents.AppendLine(fileData)
'Durch schreiben des footers signalisieren dass keine Daten mehr kommen
contents.AppendLine(foot)
'MessageBox.Show(contents.ToString)
'Stream Reader zum lesen der Antwort von Twitpic
Dim reader As StreamReader
Dim result As String
Dim response As HttpWebResponse
'Einen Webrequest zu der TwitPic API erstellen
Dim request As HttpWebRequest = WebRequest.Create("http://urspacecity.de/uploadpic/up.php")
request.ContentType = String.Format("multipart/form-data; boundary={0}", gui)
request.Method = "POST"
'Die Daten die noch im Stringbuilder als String vorliegen
'in das byte (Binär)-Format umwandeln, damit die API diese annimt
Dim bytes As Byte() = System.Text.Encoding.GetEncoding(encoding).GetBytes(contents.ToString())
request.ContentLength = bytes.Length
'Einen Stream aus dem WebRequest erstellen
Dim writer As Stream = request.GetRequestStream()
'Die Binären Daten in den Strom schreiben
writer.Write(bytes, 0, bytes.Length)
response = request.GetResponse()
reader = New StreamReader(response.GetResponseStream)
result = reader.ReadToEnd
reader.Close()
Return result
End Function
終於找到了解決方法-更改編碼:
Dim encoding As String = "iso-8859-2"
要解決“在寫入請求數據之前無法檢索此請求的響應”錯誤,您應在調用request.GetResponse()
之前關閉writer
流,如下所示:
writer.Write(bytes, 0, bytes.Length)
writer.Close()
response = request.GetResponse()
您不必在.net桌面版本中執行此操作,但必須在.net Compact Framework中執行此操作。
我知道這是一個古老的問題,我的答案很可能會被問問者忽略,但“在寫入請求數據之前,無法檢索到此請求的響應”,谷歌搜索將我引導至此問題。 希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.