前提・実現したいこと
C#初心者です。
2つのサーバ間にWebAPIを作成し、HTTPSでデータの送信を行うシステムを作っています。
curlコマンドを叩くと片方のサーバからファイルをアップロードさせたいです。
●リクエスト
メソッド:POST
コンテンツタイプ:multipart/form-data
●レスポンス
HTTPステータスコード:500(状況に応じて)
コンテンツタイプ:application/json
エンコード:UTF-8
発生している問題・エラーメッセージ
テスト環境がないため実際に動くかどうか確認ができないので質問させていただきました。 以下のコードで形式の設定は合っていますか? コマンド上に結果を出すにはどうしたら良いのでしょうか。 また、システムを動かすうえで不足事項やアドバイスがあると嬉しいです。 よろしくお願い致します。
該当のソースコード
C#
1//送信元のURL 2string clienturl = "http://localhost/"; 3System.Net.WebClient webclient = new System.Net.WebClient(); 4 5//WebRequestの作成 6HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(clienturl); 7webreq.Method = "POST"; 8webreq.ContentType = "multipart/form-data"; 9 10//WebResponseの作成 11HttpWebResponse webres = (HttpWebResponse)WebResponse.Create(localurl); 12webres.ContentType = "application/json";
「動かしてから」質問されたほうが良いかと思います。
回答をもらっても結局動かして結果を確認しないと解決になりませんので。
もう少し事情が分からない者にも理解しやすくかいていただけませんか?まずcurlはどう関係するのでしょうか
あと今回はsqlserverは関係ないですか?作るのはどういうプラットフォームのアプリケーションですか?
ご回答ありがとうございます。
curlを使ってサーバから送信するファイルを指定し、コマンドを叩きます。
(例)
curl -X PUT -f --insecure --url https://ホスト名/コントローラ名/メソッド名 -F "file=ファイルパス"
そのファイルを片方のサーバが受け取り、その結果を戻り値(成功:0、失敗:-1)としてコマンド上で表示したいです。
まだ説明が不足していると思うので、質問をしていただければわかる範囲でお答えしたいです。
よろしくお願いいたします。
サーバAからサーバBにcurlをする。サーバBで(コード例のようなものを持った)C#のアプリを作る。応答をサーバAで受け取る。の理解はあってますか?(あってないと思ってます)
私はそのような解釈で合っていると思いますが、、、。
> HTTPステータスコード:500(状況に応じて)
500 というのはサーバーエラーですけど、どういうことですか?
サーバー同士で HTTP 通信をするというのはどういうことですか?
Linux は知らないのでハズレかもしれませんが、curl というのはユーザー(クライアント)がコマンドラインから入力するものでは?
でも、C# のタグが付いていて、質問にアップされているソースコードを見ると HttpWebRequest / HttpWebResponse と書いてあって Windows OS で動く .NET Framework アプリの話ですよね?
質問文を読む限り、失礼ながら、分かって書いているとはとても思えません。
C# で .NET アプリということなら、例えば一方が ASP.NET Web API、他方が Windows Forms アプリということではないのですか?
そうでないなら、ここに書いてあること以外は知る由もない第三者でも分かるように説明してください。
ご回答ありがとうございます。
HTTPステータスコードは、正常かエラーかをレスポンスで返したいので、500というのは例で挙げただけです。わかりづらくてすみません。
言語についてですが、C#というのは間違いです。 .NETでコーディングしています。
>curlというのはユーザー(クライアント)がコマンドラインから入力するものでは?
についてはその通りで、
クライアントが例のようなコマンドを打ってファイルをこちらのサーバに送信してもらいます。
そのための新しいサービスとして、WebAPIを作成しようとしています。
> 言語についてですが、C#というのは間違いです。 .NETでコーディングしています。
意味不明です。質問者さん自身分かって上記を書いているとは思えないです。
.NET は言語ではありません。C# または VB.NET が .NET で使える言語です。
そういう話をしなければならないとすると、この先話が通じるとは思えないのですが、とりあえずレスしますと・・・
> クライアントが例のようなコマンドを打ってファイルをこちらのサーバに送信してもらいます。
そうだとすると、質問にあった HttpWebRequest / HttpWebResponse を使った C# のソースコードは何をするのですか?
「例のようなコマンド」でクライアント側から Web サーバーにファイルを送信できるのか分かりませんが、もしできるのであれば、HttpWebRequest / HttpWebResponse を使ったクライアント側のアプリは不要のはず。何に使うのですか?
クライアント側のアプリは不要であれば、結局、質問者さんが構築しなければならないのは Web サーバーでファイルを受信して保存し、応答として JSON 文字列を返す Web アプリだけということになるはずです。違いますか?
違わないということなら、Web サーバー側でファイルを受け取る Web アプリは具体的に何にするのか、案はあるのですか? そのあたりを書いてください。
そうではなくて「例のようなコマンド」でファイルを送信できないとすると、クライアントでそういうコマンドを打っても何の意味もないように思えますけど、どういう話なんでしょう?
>クライアント側のアプリは不要であれば、結局、質問者さんが構築しなければならないのは Web サーバーでファイルを受信して保存し、応答として JSON 文字列を返す Web アプリだけということになるはずです。
このご指摘が自分のやりたいことです。
意味不明な質問の意図を読み取ってくださりありがとうございます。
HttpWebRequest / HttpWebResponse が不要だということがわかりました。WebAPIで検索した際、このワードがでてきたので参考にしただけのものです。
ファイルを受信するWebサービスとしてWebAPIを作成し、処理結果をJSON形式で応答するものを作りたいです。
ここのような掲示板で話を続けて質問者さんの課題を解決するのは、失礼ながら質問者さんの知識・スキルが全く不足していて、非常に難しいと思います。
質問者さんの立場は分かりませんが、もし会社・組織の業務の一環とかで行っているなら、上司の方に相談してください。相談できないような状況にあるとすると、その会社・組織は製品品質を担保できてないということになります。はっきり言って、とんでもない話と思います。
個人の趣味とか勉強のためにやっているということであれば話は別ですが、それにしてもここのような掲示板での文章のやり取りで解決するには、それなりの知識・スキルが必要です。
> ファイルを受信するWebサービスとしてWebAPIを作成し、処理結果をJSON形式で応答するものを作りたいです。
ということに、ある程度の見通しを立てて、OS、サーバー、アプリのフレームワーク等をどうするか考えてみてください。話はそれからだという感じがしてます。
ご指摘ありがとうございます。
自分で勉強しなおしてみます。お時間を使っていただきありがとうございました。
勉強しなおすというのは既に勉強した人の使う言葉です。一体なにを勉強しなおしたら次の質問のような惨状になるんでしょうか?
あなたの回答
tips
プレビュー