如何将数据发送到android中的服务器

我想在我的应用程序中循环发送纬度和经度。 这是使用GPS获取此参数的function

private void showLocation(Location location) { String latitude = "Latitude: "; String longitude = "Longitude: "; if (location != null) { latitude += location.getLatitude(); longitude += location.getLongitude(); } } 

我正在寻找网络上的方法,我找到了一些,但它不起作用,它已被弃用

 public void sendData(double latitude, double longitude){ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://192.xxx:8080/run/mypage.php"); try { List nameValuePairs = new ArrayList(2); nameValuePairs.add(new BasicNameValuePair("Latitude", Double.toString(latitude))); nameValuePairs.add(new BasicNameValuePair("Longitude", Double.toString(longitude))); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); httpclient.execute(httppost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } } 

在此先感谢4帮助

我建议你使用OkHttp库进行联网。 你的例子可能是这样的

 private final OkHttpClient client = new OkHttpClient(); public String sendData(double latitude, double longitude){ try { RequestBody formBody = new FormBody.Builder() .add("Latitude", Double.toString(latitude)) .add("Longitude", Double.toString(longitude)) .build(); Request request = new Request.Builder() .url("http://httpbin.org/post") .post(formBody) .build(); Response response = client.newCall(request).execute(); return response.body().string(); } catch (IOException e) { return "Error: " + e.getMessage(); } } 

不要忘记在AsyncTask运行网络代码

 class IOAsyncTask extends AsyncTask { @Override protected String doInBackground(Location... params) { return sendData(params[0].getLatitude(), params[0].getLongitude()); } @Override protected void onPostExecute(String response) { Log.d("networking", response); } } 

这可能是您活动的onCreate方法

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Location current = new Location(""); current.setLatitude(23.9569596); current.setLongitude(12.567567); new IOAsyncTask().execute(current); } 

请注意,我使用http://httpbin.org/post作为远程地址,您必须使用您的终端URL替换。 在我的情况下,响应是:

 { "args": {}, "data": "", "files": {}, "form": { "Latitude": "23.9569596", "Longitude": "12.567567" }, "headers": { "Accept-Encoding": "gzip", "Content-Length": "39", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "okhttp/3.0.1" }, "json": null, "origin": "xxx.xx.xxx.xx", "url": "http://httpbin.org/post" }