如何将数据发送到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" }