2017-03-29 1 views
0

Unity에서 NodeJS API로 이미지를 보내려고했지만 불행히도 작동하지 않습니다.Unity3D의 이미지로 POST 요청 보내기

private string POSTUrl = "http://myNodeJSAPI.com/upload-image"; 
private Dictionary<string, string> postHeader = new Dictionary<string, string>(); 

public WWW POST() { 
    WWW www; 
    postHeader["content-Type"] = "application/octet-stream"; 
    postData = File.ReadAllBytes("Assets/Resources/ImageIWantToSend.png"); 
    www = new WWW(POSTUrl, postData, postHeader); 
    StartCoroutine(WaitForRequest(www)); 
    return www; 
} 

IEnumerator WaitForRequest(WWW www) 
{ 
    yield return www; 
    if (www.error == null) 
    { 
     Debug.Log("WWW Ok!: " + www.text); 
    } 
    else 
    { 
     Debug.Log("WWW Error: " + www.error); 
    } 
} 

여기 내 nodejs 하나의 관련 부분 : 여기 내 C# 코드의 추출물이

요청이 전송하지만, API에 의해 수신되지 않습니다
app.post('/upload-image', rawBody, function (req, res) { 
     console.log("File received!"); 
     if (req.rawBody && req.bodyLength > 0) { 
      fs.writeFile("/tmp/ImageIWantToSend.png", req.rawBody, function (err) { 
       if (err) { 
        return console.log(err); 
       } 
       console.log("Image has been saved! Starting other things..."); 
      }) 
     } 
    } 

(I 503 불량 게이트웨이를 얻을 수) . 나는 같은 요청을 시도한다 Unity와 그것이 작동하는 것 같다 (Postman을 사용하는 것 : 바이너리로 이미지 첨부 된 기본 게시물 요청).

실수를 저질렀나요 아니면 이것을 달성 할 다른 방법이 있습니까? 감사합니다.

편집 : 마지막으로 application/octet-streamtext/html으로 변경하여 문제를 해결했습니다. Nodej에 데이터를 보내는 더 좋은 방법이 있다면 나는 아직도 관심이있다.

답변

1

유니티의 새로운 UnityWebRequest 클래스를 확인하라. 이것은 원래의 WWW를 대체한다.

C# WebClient 또는 HttpWebRequest 클래스를 사용할 수도 있습니다. WebGL 빌드를 사용하지 않는 경우 Unity와 함께 작동합니다.

무료이기는하지만 요청을 처리하기 위해 good unity plugin입니다.

+0

오, 감사합니다. UnityWebRequest를 보지 못했습니다. 이것에 대해 살펴 보겠습니다. –

+0

그 같은 문서를보고 있는데, 제안한대로하고 있습니다 ... POST 요청을 할 수는 있지만 포함시키려는 데이터는 포함되어 있지 않습니다. 내가 뭘 잘못하고 있는지 궁금해 ... – jckstl