我正在尝试使用android创建一个使用本地REST API的移动客户端 我已经在eclipse上创建了rest服务器,它运行没有问题 但我试图在android studio上创建我的客户端,它也在运行但是当我点击按钮时没有发生任何事情。
public class MainActivity extends AppCompatActivity {
private Button btnChercher;
private TextView tvJson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnChercher = (Button) findViewById(R.id.btnchercher);
tvJson = (TextView) findViewById(R.id.tvJson);
btnChercher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new JsonTask().execute("http://localhost:8080/membres");
}
}
);
}
public class JsonTask extends AsyncTask<String,String,String>{
@Override
protected String doInBackground(String... params) {
HttpURLConnection connection=null;
BufferedReader reader=null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line ="";
while ((line=reader.readLine())!=null){
buffer.append(line);
}
String finalJson = buffer.toString();
JSONObject parentObject = new JSONObject();
JSONArray parentArray = parentObject.getJSONArray("");
JSONObject finalObject = parentArray.getJSONObject(0);
String nomMembre = finalObject.getString("nomMembre");
return nomMembre+"\n";
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
if(connection!=null){
connection.disconnect();
}
if(reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
tvJson.setText(result);
}
}
}`
答案 0 :(得分:1)
您的示例显示了网址"http://localhost:8080/membres"
。这是故意的吗?您的Android应用程序是否在运行您的Web服务器?
可能不是。 "http://localhost:8080/membres"
适用于您的计算机,因为localhost
指的是您的计算机本身。
为了让您的Android应用访问您的REST API,您应该执行以下操作之一:
localhost
替换为您服务器的IP。这将要求您的Android应用与您的服务器位于同一网络上。localhost:8080
替换为可公开访问的网址。还有其他选择,但这些是最简单的。