通过从Android发布数据到node.js?

我使用nodejs作为服务器和java(android)作为客户端,我成功地发送数据通过post从android到节点。 但是我的问题是当android发送的数据(string)包含空格换行(回车)它在节点上收到但是字符发生了变化,

例如,我从android发送这个string

Hello I learn android 

string发送到节点和接收,但我得到这个节点

 Hello%0AI+learn+android 

我使用这个代码发送string到android中的节点。

  public void btnOnClick(){ String text= URLEncoder.encode(editText.getText().toString(), "utf-8"); //I get from editText and convert to utf-8 sendToNode(text); } public void sendToNode(String text){ try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://myDomain.com:8888/"); UrlEncodedFormEntity form; try { Log.i("kirim ke node isitextAsli ",text); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("datanah",text)); form=new UrlEncodedFormEntity(nameValuePairs,"UTF-8"); httppost.setEntity(form); HttpResponse response = httpclient.execute(httppost); Log.i("HTTP Post", "Response from server node = " + response.getStatusLine().getReasonPhrase() + " Code = " + response.getStatusLine().getStatusCode()); } catch (ClientProtocolException e) { Log.e("HTTP Post", "Protocol error = " + e.toString()); } catch (IOException e) { Log.e("HTTP Post", "IO error = " + e.toString()); } } 

我使用这个代码在节点中接收string

 req.addListener('data', function(chunk) { data += chunk; }); req.addListener('end', function() { console.log("from android :"+data); //result of data is Hello%0AI+learn+android }); 

我如何解决我的问题?

请帮忙,谢谢。

该string是URL编码的,正如您在代码中明确要求的(并且需要定期的POST)。 在服务器上解码它。

要在服务器端进行解码,请执行以下操作:

 var querystring = require('querystring'); querystring.unescape(data.replace(/\+/g, " ")); 

以下是编码和解码示例,您希望在服务器部分进行解码

  String encoded; try { encoded = URLEncoder.encode(input, "UTF-8"); System.out.println("URL-encoded by client with UTF-8: " + encoded); String incorrectDecoded = URLDecoder.decode(encoded, "ISO-8859-1"); System.out.println("Then URL-decoded by server with ISO-8859-1: " + incorrectDecoded); String correctDecoded = URLDecoder.decode(encoded, "UTF-8"); System.out.println("Server should URL-decode with UTF-8: " + correctDecoded); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }