2015-04-22 126 views
1

我无法从bluemix部署的node.js检索响应。我的Android XML,Java代码和node.js的代码below.Can给任何人能帮我解决这个我无法将我的请求参数发送到bluemix部署的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); 

任何人都可以帮助我解决这个问题吗?

+0

'我无法检索响应'。答案是否为空?有没有回应?这不是你所期望的吗?请稍微详细一点。 – Huey

+0

是的,我不知道有关空或空,但我无法看到我的android屏幕上的node.js的任何响应。我可以看到“发送后”吐司在我的screen.it不执行 HttpResponse httpResponse = httpClient.execute(httpGet); –

+0

您是否可以尝试向Android应用以外的应用发出请求以尝试隔离该问题? –

回答

-1

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

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

0

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

相关问题