0
私はPOSTリクエストからREST-APIの応答を取得しようとしています。C#REST API - POSTリクエスト:「あなたがリクエストボディを提供しなければならない..」
このエラーを取得:
ここYou must provide a request body if you set ContentLength>0 or SendChunked==true. Do this by calling [Begin]GetRequestStream before [Begin]GetResponse
私のコードです:
public enum httpVerb
{
GET,
POST,
PUT,
DELETE
}
class RestProvider
{
public string uri { get; set; }
public httpVerb httpMethod { get; set; }
public RestProvider()
{
uri = "";
httpMethod = httpVerb.POST;
}
public string makeRequest()
{
string strResponseValue = string.Empty;
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = httpMethod.ToString();
request.ContentLength = uri.Length;
request.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
using (Stream responseStream = response.GetResponseStream())
{
if (responseStream != null)
{
using (StreamReader reader = new StreamReader(responseStream))
{
strResponseValue = reader.ReadToEnd();
}
}
}
}
catch (Exception ex)
{
strResponseValue = "{\"errorMessages\":[\"" + ex.Message.ToString() + "\"],\"errors\":{}}";
}
finally
{
if (response != null)
{
((IDisposable)response).Dispose();
}
}
return strResponseValue;
}
}
任意のアイデアは?
リクエスト全体の長さを取得するにはどうすればよいですか? –
'ContentLength'はリクエスト全体の長さではありません。 ***リクエストコンテンツ***の長さです。そして、あなたは***リクエストの内容***を送信しているようには見えません。したがって、 'ContentLength'をゼロのままにしておきます。リクエストコンテンツ***を送信している場合は、ContentLengthを***リクエストコンテンツの長さ(バイト)に設定する必要があります。 –