2017-03-29 18 views
0

UnityからNodeJS APIに画像を送信しようとしていますが、残念ながらそれを動作させることはできません。ここに私のC#のコードの抜粋です: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の関連部分1:

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..."); 
      }) 
     } 
    } 

要求は、APIによって送信されたが受信されることはありません(私は503不正なゲートウェイを取得します) 。私は同じリクエストを試みますユニティとそれは働くようです(郵便配達:バイナリとして添付された画像で基本的な投稿要求を使用して)。

私は間違いを犯しましたか、これを達成する別の方法がありましたか? ありがとう!

編集:最後にapplication/octet-streamtext/htmlに変更して問題を解決しました。 Nodejにデータを送信するより良い方法があれば、私はまだ興味があります

答えて

1

Unityの新しいUnityWebRequestクラスをチェックしてください。これはオリジナルのWWWの代わりです。

また、C#WebClientまたはHttpWebRequestクラスを使用することもできます。 WebGLビルドを使用していない場合、Unityと連携します。

これは無料ではありませんが、リクエストを処理するためのgood unity pluginです。

+0

私はUnityWebRequestを見たことがありませんでした。私はこれを見ていきます。 –

+0

私はそれらの同じ文書を見ていて、それが示唆していることをやっています...私はPOST要求をするためにそれを得ることができますが、私が含めることを試みているデータは含まれていません。私が間違っていることを驚かす... – jckstl

関連する問題