2016-08-18 3 views
1

누군가가 도움을 줄 수 있고, Azure 모바일 앱 서비스를 사용하고 있으며 편집기와 IOS에서 모든 것이 잘 작동하기를 바랍니다. 기존 레코드를 업데이트하려고합니다.Android에서 UnityWebRequest에 대한 패치를 사용하고 '지원되지 않는 프로토콜'을 얻으려고 시도합니다.

당신이

PATCH/테이블/TABLENAME/패치를 사용해야하는 푸른 자원 문서에 따르면조차 시도하지 않는 안드로이드 장치에서 테스트 할 때 ID가 테이블

의 기존 기록을 갱신 웹 요청을 보내면 단순히 오류가 반환됩니다 : "지원되지 않는 프로토콜"

조사에 따르면 해결 방법 해결책이 있지만 Unity와 관련된 항목을 찾지 못했음을 보여줍니다.

포럼에서 HttpMethod.Patch에 대한 검색을 수행했지만 단일 기사를 찾을 수 없습니다. 문제를 해결하는 방법을 이해하고 Unity에서 문제를 해결할 수있는 방법이 있는지 이해하는 데 정말로 어려움을 겪고 있습니다.

도움을 주시면 감사하겠습니다.

그냥 내가이 추가 유니티 문서에 따라 것이라고 생각 여기에서 찾을 : 5.3에서 지원 https://docs.unity3d.com/Manual/UnityWebRequest.html

플랫폼 :

모바일 플랫폼 : 아이폰 OS, 안드로이드, 윈도우 폰 8

설정 HTTP 동사를

사용자 정의 동사가 허용됩니다 (등, POST, HEAD를 GET) (그래서 우리는 패치를 추가) 아무 문제없이 작동해야하지만 UnityWebRequest를 시도해도 오류가 반환됩니다. '지원되지 않는 프로토콜'

공식 문서에 이것이 작동해야한다고 나와있는 것을 볼 때 UnityWebRequest의 버그 일 수 있습니까?

미리 감사드립니다.

P. 우리는 이것을 http://answers.unity3d.com/questions/1230067/trying-to-use-patch-on-a-unitywebrequest-on-androi.html에 올렸고 어떤 이유도 들어 보지 못했습니다. 그래서 나는 여기에 질문을 올리고 있습니다. 누군가가이 주제에 대해 조금이라도 알고 있다면 좀 밝혀주세요.

+0

저는 Azure 모바일 팀 출신입니다. 아쉽게도 Azure Mobile Android SDK 만 웹 요청을하기 위해 Unity를 사용하는 것을 지원하지 않습니다. 그러나 오픈 소스이기 때문에 스스로 파고들 수 있습니다. https://github.com/azure/azure-mobile-apps-android-client –

답변

1

UnityWebRequest의 API 레퍼런스에 따르면,하지 UnityWebRequest의 방법 PATCH 및 기타 매개 변수로 요청을 구성 PATCH verb의 정의를 다음과 같은 외에, 기본적으로 PATCH 동사를 지원하기위한 것으로 보인다. UnityWebRequest으로 PATCH 동사에 대한 정보를 찾을 수 없기 때문에 위의 내용을 이해할 수 있습니다.

그러나, 문제 정보 Unity Web Request and Json Utility에 따라, 당신은 푸른 모바일 앱 테이블 레코드를 업데이트 할 UnityRestClient 대신 UnityWebRequest를 사용하여 GitHub의 project에 따라 시도 할 수 있습니다.

희망이 있습니다.

+0

나에게 다시 돌아와 줘서 고마워. 우리는 실제로 [여기] (https://github.com/dgkanatsios/AzureServicesForUnity)에서 찾을 수있는 사용자 정의 라이브러리를 사용하고 있습니다. 기본적으로이 게임을 통해 전체 게임을 구축했기 때문에 대부분의 코드를 교체해야합니다. 우리가 지름길을 위해 우리는이 새로운 "SDK"를 위해 하나의 기능을 사용하려고 시도한다고 말했 다. 그것을 제공 해주셔서 대단히 감사합니다. –

+0

제안 해 주셔서 대단히 감사합니다. 불행하게도 우리는 UnityRestClient가 코드 예제가 없으므로 어떻게 작동하는지 알 수 없습니다. Github 프로젝트를 사용하여 리버스 엔지니어링을 시도했지만 모바일 구성 요소에는 Azure가 더 이상 사용하지 않는 앱 키가 필요하므로 작동하지 못합니다. 우리는 Unity가 참여하게하고 처음에는 버그로 확인하고 해결하려고했지만 그들은 다시 우리에게 와서 안드로이드가 보안상의 이유로 패치 동사를 지원하지 않으므로 이것은 의도적으로 설계된 것이라고 말했다. –

+0

다음은 [Link] (http://answers.unity3d.com/questions/1230067/trying-to-use-patch-on-a-unitywebrequest-on-androi.html#comment-1233622)의 세부 정보입니다. PATCH를 사용하지 않고 항목을 업데이트 할 수있는 또 다른 방법이 있습니까? 업데이트 서버 측에서 API 호출에 데이터를 전달할 수 있습니까? –

1

Android 용 Azure SDK는 PATCH를 지원하는 okHttp 라이브러리를 사용합니다. 그러나 Unity의 웹 요청은 PATCH를 지원하지 않는 기본 안드로이드 네트워킹을 사용합니다. Easy API를 사용하여 간단한 해결 방법을 만들었습니다. https://github.com/dgkanatsios/AzureServicesForUnity

+0

친구 인 Jean이 메시지를 릴레이하도록 요청했습니다. 그는 그것을 테스트했으며 100 % 작동합니다.이 솔루션을 고맙게 생각해 줘서 고맙습니다. 이제 우리는 앞으로 나아갈 수 있고 두 플랫폼에서 시작할 수 있습니다. 당신의 록 스타. –

0

해결 방법 중 하나는 Azure App Services (노드 백엔드)에서 작동하는 "method-override"를 설치하는 것입니다.

  1. 것은 "메소드 오버라이드 (override)"를 추가 : "^ 2.3.7"당신 "package.json"종속성 실행하여 :

    npm install method-override --save

  2. 은 당신의 "응용 프로그램에 다음을 삽입 의 .js "(이것은 method-override readme에 설명되어 있습니다)

    var methodOverride = require('method-override');

    ,691 응용 프로그램 설정을 표현

    그런 다음 라인 var app = express(); 추가 한 후 : 그럼

X-HTTP-Method-Override: PATCH

:

app.use(methodOverride('X-HTTP-Method-Override'))

  • 지금 헤더를 "PATCH"에서 "POST"에서 업데이트 요청을 변경하고 추가 x-http 메서드 오버라이드 헤더를 활성화하고 PATCH 요청으로 간주되는 Android에서 POST 요청을 보낼 수 있도록 허용합니다. 그러면 업데이트가 성공적으로 처리됩니다.

  • 관련 문제