質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

0回答

478閲覧

POSTメソッドでリクエストしJSON形式でレスポンスを貰う

maam

総合スコア55

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2019/06/24 08:25

前提・実現したいこと

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";

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/06/24 08:36

「動かしてから」質問されたほうが良いかと思います。 回答をもらっても結局動かして結果を確認しないと解決になりませんので。
papinianus

2019/06/24 09:15 編集

もう少し事情が分からない者にも理解しやすくかいていただけませんか?まずcurlはどう関係するのでしょうか あと今回はsqlserverは関係ないですか?作るのはどういうプラットフォームのアプリケーションですか?
maam

2019/06/24 09:25

ご回答ありがとうございます。 curlを使ってサーバから送信するファイルを指定し、コマンドを叩きます。 (例) curl -X PUT -f --insecure --url https://ホスト名/コントローラ名/メソッド名 -F "file=ファイルパス" そのファイルを片方のサーバが受け取り、その結果を戻り値(成功:0、失敗:-1)としてコマンド上で表示したいです。 まだ説明が不足していると思うので、質問をしていただければわかる範囲でお答えしたいです。 よろしくお願いいたします。
papinianus

2019/06/24 09:31

サーバAからサーバBにcurlをする。サーバBで(コード例のようなものを持った)C#のアプリを作る。応答をサーバAで受け取る。の理解はあってますか?(あってないと思ってます)
maam

2019/06/24 09:38

私はそのような解釈で合っていると思いますが、、、。
退会済みユーザー

退会済みユーザー

2019/06/24 13:50

> HTTPステータスコード:500(状況に応じて) 500 というのはサーバーエラーですけど、どういうことですか? サーバー同士で HTTP 通信をするというのはどういうことですか? Linux は知らないのでハズレかもしれませんが、curl というのはユーザー(クライアント)がコマンドラインから入力するものでは? でも、C# のタグが付いていて、質問にアップされているソースコードを見ると HttpWebRequest / HttpWebResponse と書いてあって Windows OS で動く .NET Framework アプリの話ですよね? 質問文を読む限り、失礼ながら、分かって書いているとはとても思えません。 C# で .NET アプリということなら、例えば一方が ASP.NET Web API、他方が Windows Forms アプリということではないのですか? そうでないなら、ここに書いてあること以外は知る由もない第三者でも分かるように説明してください。
maam

2019/06/25 04:58

ご回答ありがとうございます。 HTTPステータスコードは、正常かエラーかをレスポンスで返したいので、500というのは例で挙げただけです。わかりづらくてすみません。 言語についてですが、C#というのは間違いです。 .NETでコーディングしています。 >curlというのはユーザー(クライアント)がコマンドラインから入力するものでは? についてはその通りで、 クライアントが例のようなコマンドを打ってファイルをこちらのサーバに送信してもらいます。 そのための新しいサービスとして、WebAPIを作成しようとしています。
退会済みユーザー

退会済みユーザー

2019/06/25 07:13

> 言語についてですが、C#というのは間違いです。 .NETでコーディングしています。 意味不明です。質問者さん自身分かって上記を書いているとは思えないです。 .NET は言語ではありません。C# または VB.NET が .NET で使える言語です。 そういう話をしなければならないとすると、この先話が通じるとは思えないのですが、とりあえずレスしますと・・・ > クライアントが例のようなコマンドを打ってファイルをこちらのサーバに送信してもらいます。 そうだとすると、質問にあった HttpWebRequest / HttpWebResponse を使った C# のソースコードは何をするのですか? 「例のようなコマンド」でクライアント側から Web サーバーにファイルを送信できるのか分かりませんが、もしできるのであれば、HttpWebRequest / HttpWebResponse を使ったクライアント側のアプリは不要のはず。何に使うのですか? クライアント側のアプリは不要であれば、結局、質問者さんが構築しなければならないのは Web サーバーでファイルを受信して保存し、応答として JSON 文字列を返す Web アプリだけということになるはずです。違いますか? 違わないということなら、Web サーバー側でファイルを受け取る Web アプリは具体的に何にするのか、案はあるのですか? そのあたりを書いてください。 そうではなくて「例のようなコマンド」でファイルを送信できないとすると、クライアントでそういうコマンドを打っても何の意味もないように思えますけど、どういう話なんでしょう?
maam

2019/06/25 07:40

>クライアント側のアプリは不要であれば、結局、質問者さんが構築しなければならないのは Web サーバーでファイルを受信して保存し、応答として JSON 文字列を返す Web アプリだけということになるはずです。 このご指摘が自分のやりたいことです。 意味不明な質問の意図を読み取ってくださりありがとうございます。 HttpWebRequest / HttpWebResponse が不要だということがわかりました。WebAPIで検索した際、このワードがでてきたので参考にしただけのものです。 ファイルを受信するWebサービスとしてWebAPIを作成し、処理結果をJSON形式で応答するものを作りたいです。
退会済みユーザー

退会済みユーザー

2019/06/25 07:58

ここのような掲示板で話を続けて質問者さんの課題を解決するのは、失礼ながら質問者さんの知識・スキルが全く不足していて、非常に難しいと思います。 質問者さんの立場は分かりませんが、もし会社・組織の業務の一環とかで行っているなら、上司の方に相談してください。相談できないような状況にあるとすると、その会社・組織は製品品質を担保できてないということになります。はっきり言って、とんでもない話と思います。 個人の趣味とか勉強のためにやっているということであれば話は別ですが、それにしてもここのような掲示板での文章のやり取りで解決するには、それなりの知識・スキルが必要です。 > ファイルを受信するWebサービスとしてWebAPIを作成し、処理結果をJSON形式で応答するものを作りたいです。 ということに、ある程度の見通しを立てて、OS、サーバー、アプリのフレームワーク等をどうするか考えてみてください。話はそれからだという感じがしてます。
maam

2019/06/25 08:00

ご指摘ありがとうございます。 自分で勉強しなおしてみます。お時間を使っていただきありがとうございました。
Zuishin

2019/06/28 07:20

勉強しなおすというのは既に勉強した人の使う言葉です。一体なにを勉強しなおしたら次の質問のような惨状になるんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問