无法将我的请求参数发送到bluemix部署的node.js

时间:2015-04-22 13:26:13

标签: java android node.js ibm-cloud

无法从部署的bluemix node.js中检索响应。我的android xml,java代码和node.js代码如下。任何人都可以帮我解决这个问题

我的android xml代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
tools:context="com.example.rest.MainActivity" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_centerInParent="true"
    android:orientation="vertical" >      

    <TextView
        android:id="@+id/textreg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:paddingLeft="20dp"
        android:text="Register here"
        android:textAlignment="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#0b84aa"
        android:textSize="25sp"
        android:typeface="serif" />

    <EditText
        android:id="@+id/editTextreg5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:ems="10"
        android:hint="Full Name"
        android:layout_marginRight="15dp"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="20dp"
        android:textColor="#000000"
        android:textSize="20dp"
        android:inputType="textPersonName" />

    <EditText
        android:id="@+id/editTextreg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:ems="10"
        android:hint="Short Id   @ibm.com"
        android:layout_marginRight="15dp"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="20dp"
        android:textColor="#000000"
        android:textSize="20dp"
        android:inputType="textEmailAddress" />




    <EditText
        android:id="@+id/editTextreg2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Password"
        android:layout_marginRight="15dp"
        android:layout_marginLeft="15dp"
        android:textColor="#000000"
        android:textSize="20dp"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/buttonreg"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"

        android:layout_marginTop="20dp"
        android:layout_marginRight="15dp"
        android:layout_marginLeft="15dp"
        android:textColor="#0b84aa"
        android:textStyle="bold"
        android:text="Register" />

</LinearLayout>

我的java代码:

package com.example.rest;
        import java.io.BufferedReader;
        import java.io.InputStream;
        import java.io.InputStreamReader;

      import org.apache.http.HttpEntity;
     import org.apache.http.HttpResponse;
     import org.apache.http.client.HttpClient;
     import org.apache.http.client.methods.HttpGet;
     import org.apache.http.impl.client.DefaultHttpClient;



       import org.json.JSONObject;
      import org.json.JSONException;
       import com.loopj.android.http.AsyncHttpClient;
       import com.loopj.android.http.JsonHttpResponseHandler;
       import com.loopj.android.http.RequestParams;
        import org.apache.http.Header;
     import android.support.v7.app.ActionBarActivity;
      import android.app.ProgressDialog;
     import android.content.Intent;
      import android.os.Bundle;
        import android.util.Log;
       import android.view.Menu;
     import android.view.MenuItem;
     import android.view.View;
    import android.widget.Button;
     import android.widget.EditText;
      import android.widget.TextView;
    import android.widget.Toast;

     public class MainActivity extends ActionBarActivity {


    String url = "http://mobilefeedbackform.mybluemix.net/";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button breg1 = (Button) findViewById(R.id.buttonreg);

        breg1.setOnClickListener(new View.OnClickListener() {



            public void onClick(View v) {

                final EditText Name =(EditText) findViewById(R.id.editTextreg5);
                final EditText Email =(EditText) findViewById(R.id.editTextreg);
                final EditText Passwd =(EditText) findViewById(R.id.editTextreg2);

                if(Name.getText().toString().length()==0)
                {
                    Toast.makeText(MainActivity.this,
                            "Please enter Name", Toast.LENGTH_LONG)
                            .show();
                    return;
                }

                else if(Email.getText().toString().length()==0)
                {
                    Toast.makeText(MainActivity.this,
                            "Please enter EmailId", Toast.LENGTH_LONG)
                            .show();
                    return;
                }

                else if(Passwd.getText().toString().length()==0)
                {
                    Toast.makeText(MainActivity.this,
                            "Please enter Password", Toast.LENGTH_LONG)
                            .show();
                    return;
                }
                else
                {
                    String result = null;
                    String nametxt = Name.getText().toString();
                    String emailtxt = Email.getText().toString();
                    String passwdtxt = Passwd.getText().toString();

                  //this is the route of your Node.js service on Bluemix
                    //String yourNodeJsBluemixRoute = "mobilefeedbackform.mybluemix.net";//http://mobilefeedbackform.mybluemix.net/
                    String url = "http://mobilefeedbackform.mybluemix.net/";
                    // These are just example strings, you can use your own here
                    Toast.makeText(MainActivity.this,
                            "Before sending "+ nametxt + emailtxt + passwdtxt, Toast.LENGTH_LONG)
                            .show();
                    // Create necessary objects
                    HttpClient httpClient = new DefaultHttpClient();

                    try
                    {
                        Toast.makeText(MainActivity.this,
                                "Inside try ", Toast.LENGTH_LONG)
                                .show();
                        //httpResponse = http.get(RESTSERVICEURI + "/?deviceid=" + deviceId + "&latitude=" + String.valueOf(gps.getLatitude()) + "&longitude=" + String.valueOf(gps.getLongitude())); 
                    HttpGet httpGet = new HttpGet(url+"?name=" + nametxt + "&email=" + emailtxt + "&passwd=" + passwdtxt);
                    Toast.makeText(MainActivity.this,
                            "After sending ", Toast.LENGTH_LONG)
                            .show();
                    HttpResponse httpResponse = httpClient.execute(httpGet);
                    HttpEntity httpEntity = httpResponse.getEntity();
                    Toast.makeText(MainActivity.this,
                            "Got response ", Toast.LENGTH_LONG)
                            .show();
                    if (httpEntity != null)
                    {
                        Toast.makeText(MainActivity.this,
                                "Inside If ", Toast.LENGTH_LONG)
                                .show();
                    InputStream inputstream = httpEntity.getContent();
                    BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(inputstream));
                    StringBuilder stringbuilder = new StringBuilder();

                    String currentline = null;
                    while ((currentline = bufferedreader.readLine()) != null)
                    {
                        Toast.makeText(MainActivity.this,
                                "Inside while ", Toast.LENGTH_LONG)
                                .show();
                    stringbuilder.append(currentline + "\n");
                    }

                    result = stringbuilder.toString();
                    inputstream.close();
                    }

                    return;
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                        }
                }
            }
            });
    }
}

我的node.js代码是:

 var express    = require('express');
app         = express();



var http = require('http');
var url = require('url');

  var PORT = (process.env.VCAP_APP_PORT || 8000);
 var HOST = (process.env.VCAP_APP_HOST || 'localhost');

 var queryData = null;

  http.createServer(function(request, response) {
  queryData = url.parse(request.url, true).query;
   console.log("Hai3");
  //respond to the client
   response.write("Got the GET request");
   response.end();
   }).listen(PORT, HOST);

有谁可以帮我解决这个问题?

2 个答案:

答案 0 :(得分:0)

在Node.js代码中,您应该使用request.query。这将返回查询字符串的对象作为键值对。

答案 1 :(得分:-1)

作为替代方案,您可以使用Mobile Cloud SDK向Bluemix上的节点服务器发送REST请求。

Android SDK的设计使每个API都返回一个Bolts任务。这将帮助您更轻松地理解您的节点响应。