web-dev-qa-db-ja.com

投稿リクエストを行うときにWebClientの本文を設定する

だから私は呼び出したいAPIを持っています。最初の呼び出しはahoy呼び出しであり、リクエストの本文で、ship_type、piratename、およびpiratepassを送信する必要があります。次に、後で使用する宝物がある応答を読みたいと思います。

Webリクエストでこれを行うことができます。しかし、私はwebclientでそれを行うより良い方法があるように感じています。

(私が現在webrequestでそれをしている方法)

        //Credentials for the Pirate api
        string piratename = "IvanTheTerrible";
        string piratepass= "YARRRRRRRR";

        string URI = "https://www.PiratesSuperSecretHQ.com/sandyShores/api/respectmyauthority";

        WebRequest wr = WebRequest.Create(URI);

        wr.Method = "POST";
        wr.ContentType = "application/x-www-form-urlencoded";

        string bodyData = "ship_type=BattleCruiser&piratename=" + piratename + "&piratepass=" + piratepass;

        ASCIIEncoding encoder = new ASCIIEncoding();

        byte[] byte1 = encoder.GetBytes(bodyData);

        wr.ContentLength = byte1.Length;
        //writes the body to the request
        Stream newStream = wr.GetRequestStream();

        newStream.Write(byte1, 0, byte1.Length);
        newStream.Close();            

        WebResponse wrep = wr.GetResponse();

        string result;

        using (var reader = new StreamReader(wrep.GetResponseStream()))
        {
            result = reader.ReadToEnd(); // do something fun...
        }

いずれにせよ事前に感謝します。

7
Ivan S

あなたはこの簡単なコードで行うことができます

Uri uri = new Uri("yourUri");
string data = "yourData";

WebClient client = new WebClient();
var result = client.UploadString(uri, data);

非同期にしたい場合は、UploadStringTaskAsyncを使用できます。

13
Glauco Cucchiar