코드 보라 : 이제데이터를 게시 한 후 WebClient 응답을 읽는 방법?
using (var client = new WebClient())
{
using (var stream = client.OpenWrite("http://localhost/", "POST"))
{
stream.Write(post, 0, post.Length);
}
}
을, 내가 어떻게 HTTP 출력을 읽습니까?
코드 보라 : 이제데이터를 게시 한 후 WebClient 응답을 읽는 방법?
using (var client = new WebClient())
{
using (var stream = client.OpenWrite("http://localhost/", "POST"))
{
stream.Write(post, 0, post.Length);
}
}
을, 내가 어떻게 HTTP 출력을 읽습니까?
게시 할 데이터가 byte[]
인 것 같습니다. 이 경우 내가 기대에 당신은 쉽게 사용할 찾을 수 있습니다 :
byte[] response = client.UploadData(address, post);
을 그리고 응답이 경우 텍스트, 뭔가 같은 :
string s = client.Encoding.GetString(response);
(또는 Encoding
의 선택 - 아마도 Encoding.UTF8
)
HTTP 500 응답을 읽지 않으려 고하면 예외가 발생합니다. 그러나 귀하의 답변은 반드시 질문의 요구 사항을 충족시켜야합니다. –
그러면 질문을 명확하게 할 수 있습니다. 그것은 HttpWebRequest를 사용하여 포함될 수 있습니다 ... –
질문에 계속 http://stackoverflow.com/questions/1015020/how-to-read-an-asp-net-internal-server-error-description-with-net –
스트림을 모든 곳에서 유지하면서 거대한 바이트 배열을 할당하지 않으려는 경우 (예 : 큰 파일을 게시하려는 경우) 좋은 방법이기는하지만 WebClient의 파생 버전으로도 수행 할 수 있습니다. 다음은이를 수행하는 샘플 코드입니다.
public class WebClientWithResponse : WebClient
{
// we will store the response here. We could store it elsewhere if needed.
// This presumes the response is not a huge array...
public byte[] Response { get; private set; }
protected override WebResponse GetWebResponse(WebRequest request)
{
var response = base.GetWebResponse(request);
var httpResponse = response as HttpWebResponse;
if (httpResponse != null)
{
using (var stream = httpResponse.GetResponseStream())
{
using (var ms = new MemoryStream())
{
stream.CopyTo(ms);
Response = ms.ToArray();
}
}
}
return response;
}
}
는 또한 http://stackoverflow.com/questions/1694388/webclient-vs-httpwebrequest-httpwebresponse를 참조하십시오 여기
그리고
는 사용자 정의 웹 클라이언트입니다. – DuckMaestro