Am not able to send my request parameters to bluem

2019-08-10 01:51发布

问题:

Am not able to retrieve response from the bluemix deployed node.js. My android xml, java code and node.js code is given below.Can anyone help me in solving this

My android xml code:

<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>

And My java code:

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();
                        }
                }
            }
            });
    }
}

and my node.js code is:

 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);

Can anyone help me in this issue?

回答1:

In your Node.js code you should be using request.query. This will return an object of your query string as a key value pair.



回答2:

As an alternative, you can use the Mobile Cloud SDK to send REST requests to your Node server on Bluemix.

The Android SDK was designed so that every API returns a Bolts task. This will help you understand your Node responses with much less hassle.