【发布时间】:2016-07-12 05:36:47
【问题描述】:
直升机,
我有一个设置,我可以成功地将 json 数据发布到数据库(mongodb)。但是为在 android 应用程序中检索相同数据而编写的代码不起作用。该应用程序给出空值。如果我从谷歌的 REST API 客户端尝试,GET 正在工作。谁能帮忙。 这是我的代码:
安卓代码:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.DataOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.util.HashMap;
import java.util.Map;
public class Main7Activity extends AppCompatActivity {
public String username;
public String result;
EditText contents;
//public String result;
public EditText serial1;
public String serial;
StringBuilder content=new StringBuilder();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main7);
Intent intentExtras = getIntent();
Bundle extraBundle = intentExtras.getExtras();
username=extraBundle.getString("username");
serial1=(EditText)findViewById(R.id.serial);
serial=serial1.getText().toString();
contents=(EditText)findViewById(R.id.contents);
}
public void ret(View v) {
serial=serial1.getText().toString();
Toast.makeText(Main7Activity.this, ""+serial , Toast.LENGTH_LONG).show();
if(TextUtils.isEmpty(serial))
{
serial1.setError("Please Enter the Serial Number");
} else {
try {
URL url = new URL("http://10.43.106.94:8080/SRNSmartLab/rest/service/getNEdata" + serial);
System.out.println(url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
int responseCode = conn.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
System.out.println(in);
if (in.readLine() == null) {
contents.setText("No data found");
}
String str1;
while ((str1 = in.readLine()) != null) {
content.append(str1 + "\n");
contents.setText(content);
}
in.close();
System.out.println(content.toString());
} catch (Exception e) {
result = e.getMessage();
Toast.makeText(Main7Activity.this, "" + result, Toast.LENGTH_LONG).show();
}
}
}
}
代码:
@GET
@Path("/getNEdata/{deviceId}")
public Response getDeviceData(@PathParam("deviceId") String deviceId) {
List deviceDataList = new ArrayList<String>();
System.out.println("The data is " +deviceId);
Mongo mongo;
DBCollection collection;
DB db;
try {
mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("nedata");
// connecting to 'SRN' collection
collection = db.getCollection("nodeinfo");
BasicDBObject t = new BasicDBObject();
t.put("SerialNO", deviceId);
DBCursor cursor = collection.find(t).limit(10);
while (cursor.hasNext()) {
deviceDataList.add(cursor.next());
}
} catch (Exception e) {
return Response.status(500)
.entity("Exception Occured while getting device slist")
.build();
}
if (deviceDataList == null)
return Response.status(204).entity("No content Found!").build();
else
return Response.status(200).entity(deviceDataList.toString())
.build();
}
谢谢,阿尔比
【问题讨论】:
-
应用程序将响应为“null”作为错误