2017-01-15 13 views
0

node.jsがFirebaseをサポートしているため、主にserver.jsスクリプトを使用してアプリケーションを作成していますが、何らかの原因でパラメータを送信できません私のリクエスト(GETとPOSTの両方)。Paramsは、アンドロイドからVolleyを使用してnode.jsに送信されません

app.get('/hello', function(request, response){ 
    var outputJson = request.params.test; 
    response.send(JSON.stringify(outputJson)); 
    console.log(outputJson); 
}) 

常に何らかの理由で未定義ログコンソールを次のように対応するのNode.jsスクリプトがある

private void sendData(final String name){ 
    StringRequest sr = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      Toast.makeText(getApplicationContext(),response.toString()+" returned from node.js server",Toast.LENGTH_SHORT).show(); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(getApplicationContext(),error.toString()+"The Server returned error",Toast.LENGTH_SHORT).show(); 

     } 
    }){ 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String,String> map = new HashMap<>(); 
      map.put("test",name); 
      return map; 
     } 
    }; 
    RequestQueue r = Volley.newRequestQueue(getApplicationContext()); 
    r.add(sr); 
} 

を次のように

私のアンドロイドコードがあります。 this postからの提案に続いて、私はリクエストの本文にデータを含めて、request.body.test経由でnode.jsのリクエストからデータを取得しようとしました。

何が間違っているのかを知りたいのですが、最も重要なことは、POSTリクエストを受け取って処理する方法も知りたいと思います。私はいくつかの種類のmiddlewareを実装する必要があるいくつかのブログを読んだ。その地域の明確化も評価されます。

+0

あなたは '/ hello /:test'を試しましたか? – Roljhon

+0

https://sfbpush.herokuapp.com/hello/:test=xxx私はこれをデバッガで使用しましたが、まだ何も返されませんでした – Tyson

+0

'request.param( 'test')'を使ってあなたのパラメータを取得しようとしましたか?しかしその前に、あなたのルートで 'hello /:test'を使うようにしてください。 – Roljhon

答えて

1

私はあなたのコードを見て、Androidコードにいくつかの欠陥があることを発見しました。

  1. HashMapのはgetHeaders()関数内で定義されていますが、それは実際にこの

    @Override 
          public Map<String, String> getParams() throws AuthFailureError { 
           HashMap<String,String> map = new HashMap<>(); 
           map.put("test",name); 
           return map; 
          } 
    
  2. 代わりのrequest.bodyを使用してrequest.params試みでデータを取得しようとしているようなgetParams()で定義する必要があります。
+0

ノードのrequest.bodyを実行することによって、彼はアンドロイドコードでgetBody()をオーバーライドする必要があります。そうでない場合は、未定義のオブジェクトプロパティをスローします。request.paramsは十分に私は信じています – Roljhon

+0

それを考えた。投稿が受け入れられなかった場合、それは私の2番目の推測でした。しかし明らかにそれは解決されました –

+0

答えはまだ受け入れられていません、とにかく、あなたの答えはまだ役立ちます。 :) – Roljhon

関連する問題