在发布请求时为WebClient设置正文

时间:2016-04-19 16:02:20

标签: c# post request webclient

所以我有一个我想打电话给的api。第一个电话是一个呼叫,在请求正文中我需要发送ship_type,piratename和我的piratepass。然后我想读一下我将用于以后的宝贝战利品的回复。

我可以通过网络请求执行此操作。但我觉得有更好的方法来使用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...
        }

提前谢谢。

1 个答案:

答案 0 :(得分:10)

您可以使用这个简单的代码

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

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

请记住,如果您想要异步

,可以使用UploadStringTaskAsync