byte []를 반환하는 컨트롤러 메서드가 있습니다.
[ActionName("testbytes")]
public byte[] GetTestBytes() {
var b = new byte[] {137, 80, 78, 71};
return b;
}
내가 API를 치면 다음과 같은 결과가 나타납니다.
<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">iVBORw==</base64Binary>
또한 사용자 지정 HttpClient에서이 API를 쳤을 때 응답으로 10 바이트를 얻습니다. 다음은 사용자 지정 HttpClient의 코드입니다.
public async Task<byte[]> GetTestBytes() {
var uri = "apiPath/testbytes";
using (var client = new HttpClient())
{
var httpResponse = await client.GetAsync(uri, HttpCompletionOption.ResponseContentRead);
if (httpResponse.IsSuccessStatusCode) {
var bytes = await httpResponse.Content.ReadAsByteArrayAsync();
}
return bytes;
}
return null;
}
응답으로 10 바이트를 수신하는 동안 4 바이트가 예상됩니다.
@Markand : API를 사용하면 반환 된 응답이 큰 따옴표로 묶여집니다 ( "responsebodygoeshere").
따라서 다음 바이트 배열
var b = 새 바이트 [] {137, 80, 78, 71};
"iVBORw ==" 로 직렬화됩니다.
이 때문에 httpResponse.Content.ReadAsByteArrayAsync (); 당신의 표현 바이트 얻을 것이다 "iVBORw ==" (10 바이트 것)하지에 대한 iVBORw ==
선택적으로 응답 내용을 문자열로 읽은 다음 따옴표를 잘라낸 다음 byte []로 변환 할 수 있습니다 (더 나은 접근 방법이있을 수 있습니다. :)).
즉 var response = httpResponse.Content.ReadAsStringAsync().Trim('"')
그런 다음 다음 메서드를 호출하여 바이트를 가져옵니다.
var bytesResponse = Convert.FromBase64String(response);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다