如何使用Android REST api
我想创建一个使用android的移动客户端来使用本地REST API 我已经在eclipse上创建了其他服务器并且运行没有问题 但我试图创建我的客户端Android工作室,它也在运行,但是当我点击按钮时没有任何事情发生。如何使用Android REST api
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);
}
}
}`
你的例子显示的URL "http://localhost:8080/membres"
。那是故意的吗?您的Android应用程序是否运行您的Web服务器?大概不是。 "http://localhost:8080/membres"
适用于您的计算机,因为localhost
指的是您的计算机本身。
为了使您的Android应用程序访问你的REST API,你应该做下列之一:
- 替换
localhost
与您的服务器的IP。这将要求您的Android应用程序与您的服务器位于同一网络中。 - 将您的应用程序托管在其他地方,如Heroku。将
localhost:8080
替换为可公开访问的网址。
还有其他选择,但这些是最简单的。
另一个选项(避免连接到同一个网络)会重定向路由器中的端口,但这需要一个固定的ip来始终连接到相同的方向。 –
认为你的兄弟ggmathur为你的解释 –
但当我更换它由我的IP地址它运行,但它不显示任何东西时,我看在eclipse控制台我可以看到Hibernate requetes,我犯了错误的JSON代码 –
研究使用[Retrofit](http://square.github.io/retrofit/)它简化了大部分创建REST客户端的工作。 – chRyNaN