HTTP通信のPOSTについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Mr.D

HTTP通信のPOSTについて

#1

投稿記事 by Mr.D » 13年前

過去ログを探してみて似たような物があり試してみましたが
だめだったので此方で質問させて下さい。
文才が無いためうまく説明が出来かねますが解読できましたら
助言等頂ければと思います。
それでは本題です。

Linux上よりHTTP通信にて、POST処理でファイルアップロードを行うのですが
送信先のphpがうまくファイルを吐いてくれません。
phpが悪いのでは?と言った簡単な答えに行き着くと思うのですが
VBのSystem.Net.WebClient.UploadFile(Url, FilePath)で処理を行うと
ファイルはうまく吐けるようです。
※クライアント側とサーバー側との担当者が違います。
※FTPポートはセキュリティーのため塞いで降ります。

もしVBのUploadFileに似たような処理がC言語だけで可能でしょうか?
※HTTP通信のGET処理は正常に動作できております。

言葉足らずとは思いますが何かご存知の方がいらっしゃれば教えて下さい。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: HTTP通信のPOSTについて

#2

投稿記事 by softya(ソフト屋) » 13年前

私はやったことが無いですが、POSTでファイルアップロードする場合multipart/form-dataを実装する必要があるはずです。
http://www.studyinghttp.net/body#Form-data
これは適切に行われていますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Mr.D

Re: HTTP通信のPOSTについて

#3

投稿記事 by Mr.D » 13年前

早速のご返信ありがとうございます。
>POSTでファイルアップロードする場合multipart/form-dataを実装する必要があるはずです。
>http://www.studyinghttp.net/body#Form-data
>これは適切に行われていますか?

一応コードの大まかな流れを下記に記載いたします。
1、socketを作成
2、connectにてサーバーに接続(*****/****.php)
3、HTTPプロトコル生成(サーバへ送信)
    POST (接続先url) HTTP/1.0\r\n
    Content-Length: (ファイルサイズ)\r\n
    Content-Type: multipart/form-data;
    Content-Disposition: form-data;filename=/test.txt\r\n
    Content-Type: text/plain\r\n
    \r\n
4、GETならここでreadでしょうが、POSTなら何をsendするんだろう?(疑問)
5、close処理
を行っております。
3が悪いのか、それとも4でやはり何かsend(もしくはwrite?)を
しないといけないのかが解らないところです。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: HTTP通信のPOSTについて

#4

投稿記事 by h2so5 » 13年前

http://d.hatena.ne.jp/ryousanngata/20120505/1336277843

ここにファイルをアップロードするときのHTTPリクエストの例が載っています

コード:

POST /upload HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Host: 192.168.11.254
User-Agent: libwww-perl/5.837
Content-Length: 134
Content-Type: multipart/form-data; boundary=xYzZY

--xYzZY
Content-Disposition: form-data; name="file"; filename="/tmp/test.txt"
Content-Type: text/plain

Hello World

--xYzZY--
boundaryでファイルの境界を指定して、「Hello World」の部分に実際のファイルの内容が入るみたいですね。

Mr.D

Re: HTTP通信のPOSTについて

#5

投稿記事 by Mr.D » 13年前

>h2so5さん
参照ページ拝見させて頂きました。
それに伴って何度も動作テストを行ってみましたが結果は同じ。だめでした。

恐らく、此方側とサーバー側(php)は個々では問題ないと思われるのですが、
此方が想定しているPOST送信処理とサーバー側(動作テストVB)とのPOST送受処理が
不一致のため正常に動作していないのではないか?という結論に行き着きました。
サーバー側の受信ログを見せてもらい(私からは見れない)その辺をもう少し突き詰めて見ます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: HTTP通信のPOSTについて

#6

投稿記事 by softya(ソフト屋) » 13年前

Mr.D さんが書きました:>h2so5さん
参照ページ拝見させて頂きました。
それに伴って何度も動作テストを行ってみましたが結果は同じ。だめでした。

恐らく、此方側とサーバー側(php)は個々では問題ないと思われるのですが、
此方が想定しているPOST送信処理とサーバー側(動作テストVB)とのPOST送受処理が
不一致のため正常に動作していないのではないか?という結論に行き着きました。
サーバー側の受信ログを見せてもらい(私からは見れない)その辺をもう少し突き詰めて見ます。
wireSharkなどのパケットキャプチャでパケットをキャプチャして送信のパケットをVB版と比べてみれば分かる気がするんですが試されていないのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る