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

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

ただいまの
回答率

90.53%

  • C#

    7066questions

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

C# HTTPによるPost送信 

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,332

hamaa

score 35

すいてません。まだ他の質問も解決してませんが、緊急で質問させてください。

UWPで作っているためHTTPclientを使います。
送信部でエラーです。  何かご指摘がありましたら教えてください。

//HttpClient を作成しヘッダーを設定します
            using (var aClient = new HttpClient())
            {
                // POST 先の
                Uri theUri = new Uri("https://myURL");
                aClient.DefaultRequestHeaders.Accept.Clear();
                var byteArray = Encoding.ASCII.GetBytes(string.Format("{0}:{1}", 名前,パスワード));
                aClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
                aClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/使う形式"));

                aClient.DefaultRequestHeaders.Host = theUri.Host;

                // Content-Type 設定
                string myjson = @"{""time"":""2017-01-30T09:10:10.001 +09:00"",""source"":{""id"":""1234""},""type"":""string"",";
                myjson = myjson + @"""項目"":{""項目usb"":{""value"":123,""unit"":""A""}}}";
                Debug.WriteLine(myjson);
                //var Content_And_Type = new StringContent(myjson, System.Text.Encoding.UTF8, "application/json");
                StringContent Content_And_Type = new StringContent(myjson, System.Text.Encoding.UTF8, "application/使う形式");


                  System.Net.Http.HttpResponseMessage aResponse = null;
                try
                {
                    // データを送信します 
                    aResponse = await aClient.PostAsync(theUri, Content_And_Type);←問題のエラー
                }
                catch (System.Net.Http.HttpRequestException ex)
                {
                    Debug.WriteLine("---------------------------");
                    Debug.WriteLine("{0} Exception caught.", ex);

                }    

                if (aResponse.IsSuccessStatusCode)
                {
                    出力.Text = "!!";
                }
                else
                {
                    // 応答ステータスコードを表示します。 
                    String failureMsg = "HTTP Status: " + aResponse.StatusCode.ToString() + " – Reason: " + aResponse.ReasonPhrase;
                    出力.Text = failureMsg;
                }
            }
コード


Error内容

! HttpRequestException'は ユーザー コードによつてハンドルされませんでした。
型 'System.Net.Http.HttpRequestException' の例外が mscorlib.dll で発生しましたが、ユーザー コード内ではハンドルされませんでした
追加情報:この要求の送信中にエラーが発生しました。

BEACHSIDEさんありがとうございます。 BEACHSIDEさんご指摘部分修正
BEACHSIDEさん再度ありがとうございます
まだ、ダメでした。

もしわかったら教えてください。

追記 01/31 16:07
イミディエイド ウインドウ

System.Net.Http.HttpRequestException: この要求の送信中にエラーが発生しました。 ---> System.Net.WebException: リモート サーバーがエラーを返しました: (407) プロキシ認証が必要です
   場所 System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
   場所 System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
   --- 内部例外スタック トレースの終わり ---
   場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   場所 ○○○.MainWindow.<PostButton_Click>d__1.MoveNext() 場所 C:パス~\○○○\MainWindow.xaml.cs: Exception caught.
ステップ イン: 非ユーザー コード '○○○.App..ctor' をステップ オーバーしています
ステップ イン: 非ユーザー コード '○○○.App.InitializeComponent' をステップ オーバーしています
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hamaa

    2017/01/30 18:16

    titleが! HttpRequestException'は ユーザー コードによつてハンドルされませんでした。

    キャンセル

  • PineMatsu

    2017/01/30 18:17

    質問の本文に追記修正で記述してください。

    キャンセル

  • hamaa

    2017/01/31 12:07

    修正しました。

    キャンセル

回答 2

+2

System.Net.Http.HttpRequestException例外が出てるのなら、try~catchで例外をキャッチして詳細な内容を確認しましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/31 14:24

    PineMatsu了解しました。やってみます。のちほど回答します。

    キャンセル

  • 2017/01/31 16:13

    イミディエイド ウインドウ に出力してみました。
    リモート サーバーがエラーを返しました: (407) プロキシ認証が必要です ←これかな汗

    キャンセル

  • 2017/01/31 17:05

    恐らくそれですね。この質問は一度閉じて、別タイトルで質問を立てたほうが良いかもしれません。

    キャンセル

  • 2017/01/31 21:44

    汗…その後、影響受けない所でやったところ…
    catch に入らず、行けましたが
    StatusでNotAcceptableと出ます。これは…jsonの値の入れ方ですかね。。

    キャンセル

0

上述の通りExceptionの内容は見てほしいので、発生しているエラーと異なるかもしれませんが、
パッと見る限り、myjsonの値、json formatになってないですよね。{}がない。

Jsonを書くのが面倒であれば、Modelとなるクラス作ってJson.netとかのライブラリ使ってSerialzeするようにした方が安全かと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/31 14:24

    BEACHSIDEさんありがとうございます。 BEACHSIDEさんご指摘部分修正

    キャンセル

  • 2017/01/31 14:35

    で、改善ありました?または何かエラーでてます?それは、例外発生しますか?それともレスポンスで、HttpのStatusCodeで200以外のコード返ってきてます?

    キャンセル

  • 2017/01/31 14:36

    (修正の先頭の{の位置、正しいです?)

    キャンセル

  • 2017/01/31 16:16

    ありがとうございましす!修正しました
    イミディエイド ウインドウ 。。
    リモート サーバーがエラーを返しました: (407) プロキシ認証が必要です ←これか。。汗

    キャンセル

  • 2017/01/31 16:39

    問題切り分けできてよかったですー♪

    キャンセル

  • 2017/01/31 21:43

    汗…その後、影響受けない所でやったところ…
    catch に入らず、行けましたが
    StatusでNotAcceptableと出ます。これは…jsonの値の入れ方ですかね。。

    キャンセル

  • 2017/01/31 21:52

    Jsonの問題かと思います。正しいJsonスキーマをどっかから入手して試してみると良いかと。あとはclass化してseralize/deserializeすれば簡単に扱えると思いますねー♪

    キャンセル

  • 2017/01/31 22:08

    BEACHSIDEさんありがとうございます。
    頑張ります。

    キャンセル

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

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    7066questions

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