0
C# 또는 VB.Net에서 해결책을 찾고 있습니다.웹 응답 상태 코드를 적절하게 얻으십시오.
WebClient
을 사용하여 UploadValuesAsync
메서드의 서버 응답을 비동기 적으로 검색하고 싶습니다. 그러나이를 수행하는 방법을 이해할 수 없습니다.
아래 코드의 문제가 노출 같은 문제가 : Get Web Response Status Code properly
예제 코드 :
는 기본적으로 나는이 질문에서 수행 동일한 작업을 수행 (asynchronouslly하지만) 정수로 응답 코드를 얻으려면 연결된 다른 질문에서 e.result
속성이 ok가 아니면 코드보다 다른 상태 코드를 구문 분석 할 수 없다는 예외가 throw됩니다.
e.Error
예외에 대해 Response
속성을 검색했지만 아무 것도 찾지 못해 계속할 수 없습니다. 그런 다음
AddHandler wc.UploadValuesCompleted, AddressOf WC_UploadValuesCompleted
wc.UploadValuesAsync(New Uri("https://api.imgur.com/3/upload.xml"), values)
:
Private Sub WC_UploadValuesCompleted(ByVal sender As Object, ByVal e As UploadValuesCompletedEventArgs)
If Not e.Cancelled Then
Dim responseAsync As Byte() = e.Result
' Read the response (Converting Byte-Array to Stream).
Using sr As New StreamReader(New MemoryStream(responseAsync))
Dim serverResponse As String = sr.ReadToEnd
Dim xdoc As New XDocument(XDocument.Parse(serverResponse))
Dim status As ImgurStatus = Nothing
status = Me.GetResultFromStatus(Convert.ToInt32(xdoc.Root.LastAttribute.Value.ToString))
Select Case status
Case ImgurStatus.Success ' 200
Return New ImgurImage(New Uri(xdoc.Descendants("link").Value))
Case ImgurStatus.AccessForbidden ' 403
RaiseEvent OnAccessForbidden(Me, ImgurStatus.AccessForbidden)
Case ImgurStatus.AuthorizationFailed ' 401
RaiseEvent OnAuthorizationFailed(Me, ImgurStatus.AuthorizationFailed)
Case ImgurStatus.BadImageFormat ' 400
RaiseEvent OnBadImageFormat(Me, ImgurStatus.BadImageFormat)
Case ImgurStatus.InternalServerError ' 500
RaiseEvent OnInternalServerError(Me, ImgurStatus.InternalServerError)
Case ImgurStatus.PageIsNotFound ' 404
RaiseEvent OnPageIsNotFound(Me, ImgurStatus.PageIsNotFound)
Case ImgurStatus.UploadRateLimitError ' 429
RaiseEvent OnUploadRateLimitError(Me, ImgurStatus.UploadRateLimitError)
Case ImgurStatus.UnknownError ' -0
RaiseEvent OnUnknownError(Me, ImgurStatus.UnknownError)
Return Nothing
End Select
End Using '/ sr As New StreamReader
End If
End Sub
'클래스는 아주 좋은 방법이 할있다 HttpClient' 비동기 적으로. – EZI
의견을 보내 주셔서 감사합니다.하지만 어떻게 해야할지 모르겠습니다. – ElektroStudios
시도하지 않고 예외 결과를 이벤트 arg로 전달하십시오. 그 자리에서 파싱하고 결과 * 값 *으로 변환합니다. (원래의)'RequestToken' 메쏘드는 이미 그 일을하는 코드를 가지고 있습니다. – Plutonix