3
C#でHTTP POST WebRequestを作成し、httpsサイトにデータを投稿するコードがあります。その後、そのサイトは新しいURLにリダイレクトされ、いくつかのデータが返されます。ライブサイトでHttpWebRequest、Redirects、チャンクエンコードエラーが発生しましたが、IIS Expressローカルで動作します。
これはIIS Expressを実行しているローカルマシンで正常に動作しますが、プロダクションサーバーではContent-Length or Chunked Encoding cannot be set for an operation that does not write data.
という例外がスローされます。
これは、コードは次のようになります。何が間違って
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.UserAgent = userAgent;
StreamWriter stOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(data);
stOut.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
using (StreamReader stIn = new StreamReader(request.GetResponse().GetResponseStream()))
{
string responseHtml = stIn.ReadToEnd();
Uri downloadUri = GetDownloadUri(responseHtml);
return downloadUri;
}
}
throw new HttpException((int)response.StatusCode, response.StatusDescription);
任意のアイデアをして良い解決策は何でしょうか?
//ヨハン
ContentLengthを設定する必要はありません。そのラインを外してみてください。 – Ben
それは必要ではありませんでしたが、私はまだ同じエラーがあります。 SendChunked = falseを設定しようとしても。 –
実際には、データバイト配列は何とか空白ですか? – feroze