2017-10-12 9 views
1

私の質問に関してはかなりの回答がありましたが、何も間違っていると確信しています。本当にうまくいっていないし、自分のクッキーセッションだけでなくトークンや他の情報も渡したいからです。サーバーにPOST要求を送信するときにボタンがアプリケーションに押されたときにこれが実行されている: -C#のPOST要求にこの大きなヘッダをどのように追加しますか?

async static void PostRequest(string url) 
    { 
     //PASS HEADER HERE 


     //POST DATA 
     IEnumerable<KeyValuePair<string, string>> queries = new List<KeyValuePair<string, string>>() 
     { 
      new KeyValuePair<string, string>("data1": "name"), 
      new keyvaluepair<string, string>("data2": "555") 
     }; 

     HttpContent q = new FormUrlEncodedContent(queries); 

     using (HttpClient client = new HttpClient()) //using for disposing if not in use 
     { 
      using (HttpResponseMessage response = await client.PostAsync(url, q)) //url, content in postAsync 
      { 
       using (HttpContent content = response.Content) //store content (data) into a 'content' 
       { 
        string mycontent = await content.ReadAsStringAsync(); 
        //HttpContentHeaders headers = content.Headers; 
        Console.WriteLine(mycontent); 
       } 
      } 
     } 
    } 

-

private void button1_Click(object sender, EventArgs e) 
    { 
     PostRequest("https://www.example.com"); 
    } 

これは私が合格したいクッキーやヘッダ内の他の情報と一緒にトークンは次のとおりです。

POST /テスト/データHTTP/1.1

ホスト:host.datanet.com

ユーザエージェント:Mozilla/5.0(Windows NT 10.0; Win64; x64; RV:56.0)のGecko/20100101 Firefoxの/ 56.0

が受け入れ:*/*

受け入れ-言語:EN-GB、EN; Q = 0.5

受け入れ-エンコーディング:gzipでは、収縮、BR

のContent-Type:アプリケーション/ JSON

X-XSRF-TOKEN:eyJpdiI6ImxXMHNNQ01RT0RHTEMreU9lc0duZWc9PSIsInZhbHVlIjoiZ08zMFJDaTlZV1h5ZHlVRDBzUkFNNXBlY0ZuTFlCQ2V0SlVpRlpJRUUrRUl0NlwvUE1zN1Vza2F5blhDTStNM2NlM05VNXFZc1IxclNPSHhkNkU5Mmt3PT0iLCJtYWMiOiJmMGQxZTg5YmRlYj NmMzNjMWZlN2ZlM2E5YmE1NzRiMTgyMDQ5NDY1ZGZjNjliMDJlNDA2MGQzMjc3MjU2MzE2In0 =

リファラー:https://refererwebsitetest.html

のContent-Length:61

クッキー:セッション= eyJpdiI6IkI4XC9ndnFr6UlwvbEZMWhIK1wvbTFRSkE9PSIsInZhbHVlIjoicStyR2c3T240UW41RW5OdEFtcM2NjMjJ2V2d3Q0Yk9cL0tjZEFyV1NwSmpDbmdyc3BGZklva3RhaFJ5SWFCOFdiOHhobE1ySlU3NnJhMXMrckMzeXkxOiI1MjQxMkZuTndnPT0iLCJtYWMiY2VjMDVmiODE4YjI2YzViMjdiYzQ4MTk1ZDllMDVjOGE0MGRkMTFiYWFkNDRlZjM1MGQ4YzZjIn0の%の3D。 XSRF-TOKEN = eyJpdiI6ImxXMHNNQ01RT0RHTEMreU9lc0duZWc9PSIsInZhbHVlIjoiZ08zMFJDaTlZV1h5ZHlVRDBzUkFNNXBlY0ZuTFlCQ2V0SlVpRlpJlwvUE1zN1Vza2F5blhDTStNM2NlM05VNXFZc1IxclNPSHhkNkU5Mmt3PT0iLCJtYWMiOiJmMGQxZTg5YmRlYjNmMzNjMWZlN2ZlM2E5YmE1NzRiMTgyMDQ5NDY1ZGZjNjliMDJlNDA2MGQzMjc3MjU2MzE2In0%3D

は、Connection:キープアライブ

私は本当にC#で初心者ですし、任意の助けをいただければ幸いです。 ありがとうございました!


更新コード:

async static void PostRequest(string url) 
    { 
     //PASS HEADER DATA 
     HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url); 

     //Repeat for each header you want 
     request.Headers.Add("Accept-Encoding", "gzip, deflate, br"); 
     request.Headers.Add("Content-Type", "application/json"); 
     request.Headers.Add("X-XSRF-TOKEN", "eyJpdiI6ImxXMHNNQ01RT0RHTEMreU9lc0duZWc9PSIsInZhbHVlIjoiZ08zMFJDaTlZV1h5ZHlVRDBzUkFNNXBlY0ZuTFlCQ2V0SlVpRlpJRUUrRUl0NlwvUE1zN1Vza2F5blhDTStNM2NlM05VNXFZc1IxclNPSHhkNkU5Mmt3PT0iLCJtYWMiOiJmMGQxZTg5YmRlYjNmMzNjMWZlN2ZlM2E5YmE1NzRiMTgyMDQ5NDY1ZGZjNjliMDJlNDA2MGQzMjc3MjU2MzE2In0="); 
     request.Headers.Add("Referer", "https://refererwebsitetest.html"); 
     request.Headers.Add("Content-Length", "61"); 
     request.Headers.Add("Cookie", "session=eyJpdiI6IkI4XC9ndnFr6UlwvbEZMWhIK1wvbTFRSkE9PSIsInZhbHVlIjoicStyR2c3T240UW41RW5OdEFtcM2NjMjJ2V2d3Q0Yk9cL0tjZEFyV1NwSmpDbmdyc3BGZklva3RhaFJ5SWFCOFdiOHhobE1ySlU3NnJhMXMrckMzeXkxOiI1MjQxMkZuTndnPT0iLCJtYWMiY2VjMDVmiODE4YjI2YzViMjdiYzQ4MTk1ZDllMDVjOGE0MGRkMTFiYWFkNDRlZjM1MGQ4YzZjIn0%3D; XSRF-TOKEN=eyJpdiI6ImxXMHNNQ01RT0RHTEMreU9lc0duZWc9PSIsInZhbHVlIjoiZ08zMFJDaTlZV1h5ZHlVRDBzUkFNNXBlY0ZuTFlCQ2V0SlVpRlpJlwvUE1zN1Vza2F5blhDTStNM2NlM05VNXFZc1IxclNPSHhkNkU5Mmt3PT0iLCJtYWMiOiJmMGQxZTg5YmRlYjNmMzNjMWZlN2ZlM2E5YmE1NzRiMTgyMDQ5NDY1ZGZjNjliMDJlNDA2MGQzMjc3MjU2MzE2In0%3D"); 
     request.Headers.Add("Connection", "keep-alive"); 


     using (HttpClient client = new HttpClient()) 
     { 
      await client.SendAsync(request); 
     } 

     //POST DATA 
     IEnumerable<KeyValuePair<string, string>> queries = new List<KeyValuePair<string, string>>() 
     { 
      new KeyValuePair<string, string>("data1": "name"), 
      new KeyValuePair<string, string>("data2": "555") 
     }; 

     HttpContent q = new FormUrlEncodedContent(queries); 

     using (HttpClient client = new HttpClient()) //using for disposing if not in use 
     { 
      using (HttpResponseMessage response = await client.PostAsync(url, q)) //url, content in postAsync 
      { 
       using (HttpContent content = response.Content) //store content (data) into a 'content' 
       { 
        string mycontent = await content.ReadAsStringAsync(); 
        //HttpContentHeaders headers = content.Headers; 
        Console.WriteLine(mycontent); 
       } 
      } 
     } 
    } 

それは次のエラーを思い付く:

First error

Second error

// FIXED

は、マイクロソフトのウェブサイトのコードを適用しました。 https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-send-data-using-the-webrequest-class

最後に追加されたTHXのヘッダーがあります。

答えて

0

HttpRequestMessageクラスを使用し、必要なヘッダーを設定し、HttpClientのSendAsyncメソッドを使用してPOSTとして送信できます。

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url); 

//Repeat for each header you want 
request.Headers.Add("headerName","headervalue"); 

using (HttpClient client = new HttpClient()) 
{ 
    await client.SendAsync(request); 
} 
関連する問題