2012-08-09 44 views
0

我現在已經嘗試了幾個小時,但不知何故,我不知道這個問題。這裏是我的要求的樣本:通過套接字HTTP多部分/表格數據不顯示變量

POST /test/upload/upload.php HTTP/1.0 
Host: localhost 
User-Agent: TestBrowser 
Content-Type: multipart/form-data, boundary=635131229269 //edited 
Content-Length: 94 

--635131229269 
Content-Disposition: form-data; name="testme" 

contender 
--635131229269-- 

據sended通過標準TCP/IP套接字連接到服務器PHP,但$ _ POST [「TESTME」]值始終是空的。

有人可以看到此請求中的錯誤嗎? - >已解決

最後有一個\ r \ n在此代碼中沒有顯示。

謝謝,這解決了我的第一個問題。

也許你可以幫助我與我的第二。正如我在你的個人資料中看到的那樣,你對C#很熟悉,還有我的第二個問題。我試圖上傳一個文件到我的服務器和filedata以某種方式沒有正確要求,我認爲這是因爲編碼,但我不知道。

_content = _content 
    + "--" + boundary + Environment.NewLine 
    + "Content-Disposition: form-data; name=\"" + this._FileVarName + "\"; filename=\"" + Path.GetFileName(this._FilePath) + "\"" 
    + Environment.NewLine + "Content-Transfer-Encoding: application/octet-stream" 
    + Environment.NewLine + Environment.NewLine; 

mainContent = this.Combine(Encoding.UTF8.GetBytes(_content), StreamFile(this._FilePath)); 

private Byte[] StreamFile(string Path) 
{ 
    FileStream fs = new FileStream(Path, FileMode.Open, FileAccess.Read); 
    Byte[] ImageData = new byte[fs.Length]; 
    fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length)); 
    fs.Close(); 
    return ImageData; 
} 
+0

你應該做一個新的問題,並鏈接到這個,而不是問第二個問題。 – James 2016-02-23 17:24:45

+0

3年後,真的嗎? – 2016-03-01 16:59:11

回答

1

您必須指定不帶前導破折號的邊界(第4行)。另外我只計算92個字節的有效載荷。

+0

謝謝,就是這樣,但現在它正在進入下一個(見上文) – 2012-08-09 12:32:04

+0

@DaMaex試圖打開一個新的問題,並顯示你已經嘗試過什麼,以及正在發送什麼數據(使用[Fiddler](http ://www.fiddler2.com/fiddler2/version.asp))。 – CodeCaster 2012-08-09 12:41:14

+0

好的,謝謝 – 2012-08-09 12:44:20

1

只是爲了讓這個答案有點更加完整,必須有後「的multipart/form-data的」分號(見w3c forms spec

Content-Type: multipart/form-data; boundary=635131229269 
+0

當然,這有點舊,但是,我已經看到了這個,但也謝謝你。 – 2014-08-06 09:37:24