2017-12-06 11 views
0

내 HTTP REST API를 호출하기 위해 Xamarin과 함께 네임 스페이스 System.Net.Http 네임 스페이스를 사용하고 있는데 제대로 작동합니다. 내 HTTP 클라이언트 코드는 일반적인 휴대용 프로젝트에 상주, 나는네임 스페이스 System.Net.Cache가 존재하지 않습니다.

다음

는 같은 모습입니다 (아이폰 OS는 잔고 여전히) 내 안드로이드 전용 프로젝트에서 호출 그러나

Uri apiUri = new Uri("/example"); 
var request = (HttpWebRequest)HttpWebRequest.Create(apiUri); 
request.ContentType = "application/json"; 
request.Method = "GET"; 
WebResponse response = await request.GetResponseAsync(); 

, I 동일한 URL에 대한 연속 GET이 캐시 된 것으로 의심됩니다. https://developer.xamarin.com/api/type/System.Net.Cache.HttpRequestCachePolicy/에 설명 된대로 HttpRequestCachePolicy 개체를 통해 캐시를 제거 할 수 있음을 확인했습니다. 내 모습은 다음과 같이 보일 것입니다 :

그러나, 네임 스페이스 System.Net.Cache는 정의되어 있지 않으며이 방법을 사용할 수 없습니다. .NET SDK 4.5를 사용하고 있습니다.

누락 된 설정이 있습니까? 아니면 GET 요청 캐싱을 사용하지 않는 다른 방법을 찾아야합니까? 다음은

은 내가 오류입니다 :

The type or namespace name 'Cache' does not exist in the namespace 'System.Net' (are you missing an assembly reference?) 
+0

'HttpClient'에'AndroidClientHandler'를 사용하고 있습니까? 'System.Net.Cache'까지는 프로젝트에서'System.Net'에 대한 참조를 추가하십시오. – SushiHangover

+0

모든 클라이언트가 공용 프로젝트에 있기 때문에 HttpClientOnly를 사용하고 있습니다. 따라서 존재한다면 플랫폼 독립적 인 솔루션을 선호합니다. 여전히, 나는 당신이 언급 한'AndroidClientHandler'를 점검 할 것입니다 : 고마워요! –

+0

'Xamarin.Android' 프로젝트 옵션 (Android Build/HttpClient 구현 아래)에서 빌드 옵션으로'AndroidClientHandler'를 설정할 수 있습니다. – SushiHangover

답변

1

에 관계없이 (HttpWebRequest를 대 HttpClient를 대 웹 클라이언트)을하는 HTTP API를 명중하는 가장 좋은 방법은 무엇인가, 우리가 알아낼 @ShushiHangover 도움말에서 주석 내 질문 포인트.

PCL 출력 형식이 Xamarin "portable"프로젝트의 표준이되었습니다. 그러나 System.Net.Cache 네임 스페이스는 PCL 라이브러리에서 사용할 수 없습니다. .NET Standard 2.0에서 사용할 수 있으며 PCL에서는 사용할 수 없습니다. PCL은 2017 년 여름에 .NET 표준 라이브러리에 대한 지원으로 사용이 중단되었으며 .NET 표준 2.0에 액세스 할 수있었습니다 (다른 이점도 있음).

그러나 프로젝트를 PCL에서 .NET 표준 라이브러리로 "변환"하는 방법은 없지만 새 프로젝트를 만들고 모든 파일을 옮길 수는 있습니다. 따라서 나는 오직 나의 HTTP 클라이언트 코드만을 포함하는 새로운 .NET 표준 라이브러리 프로젝트를 만들기로 결정했다.

관련 문제