POST로 json데이터를 전달할 때,


서버 트리를 가지는 구조를 전달하면 400 bad request 를 리턴한다.


문제가 되는 구조는 아래와 같다. 


{ "msg" : { "to": "you", "from":"me"}}


text/plain으로 지정해서 보내봤지만 에러는 계속 발생한다. 



이를 아래와 같은 단일 구조로 만들어서 보내야 한다.


{"msgTo": "you", "msgFrom":"me"}




인증을 설정하지 않았어도 일반적인 웹브라우져에 주소를 입력하는 방식으로는 


{"message":"Missing Authentication Token"}  


이라는 메세지만 볼 수 있다.


Unity c# 코드를 기준으로 테스트를 해 보았다. 


----- UntyWebRequest 사용 시


WWWForm form = new WWWFrom();

form.AddField("test", "value");

UnityWebRequest www = UnityWebRequest.Post(apiAddr , form);

yield return www.SendWebRequest();     >> 실패. API 문서를 봐도 이 코드가 실패할 이유는 없는 듯 한데.. 안됨.


(* 참고 코드 : https://docs.unity3d.com/Manual/UnityWebRequest-SendingForm.html )



----- WWW 사용 시


string dataString ="json format data";

var encoding = new System.Text.UTF8Encoding();

Hashtable header = new Hashtable();

header.Add("Content-Type", "text/json");

header.Add("Content-Length", dataString.Length);

WWW www = new WWW(apiAddr, encoding.GetBytes(dataString));

yield return www;         >> 성공. 



음.. 무슨 차이지.. 당연히 UnityWebRequest API 공식 메뉴얼을 보고 코드를 작성했는데, 수동으로 헤더 설정해서 보낸 것과 무슨 차이가 발생하는걸까. 


-_-+++++++



인터넷 라디오를 음성인식으로 만들까 했지만 주말 동안 검토하고 나서 포기를 결정.


결정적인 몇가지 이유는 아래와 같다. 


1. 대부분 구글음성 API를 사용하는데 인터넷이 연결되어야 사용가능


2. 라디오를 들으며 음성인식을 동시에 하는것은 불가능


3. voice command 를 활용하여 비교적 간단하게 테스트 버전을 만들 수 있었다. 이전에 비해 인식률이 상당히 높아졌지만, 버튼 누르는 것에 비하면 덜 직관적이고, 반응속도 면에서도 비교하기는 힘든 상태다.


4. 더욱이 전자/전기기계랑 거리가 먼 일반 사용자라면 더더욱 사용하기 힘들 것이라 판단.


다음 기회를...

+ Recent posts