Java Android Studio GPS连接从web服务器返回结果

Java Android Studio GPS连接从web服务器返回结果,java,android,json,android-studio,webserver,Java,Android,Json,Android Studio,Webserver,我试图连接到Web服务器,从JSON格式获取特定信息,并将其显示在emulator/Android手机上的文本框中,但除了错误之外,我似乎无法得到任何结果 这是我目前的代码 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s

我试图连接到Web服务器,从JSON格式获取特定信息,并将其显示在emulator/Android手机上的文本框中,但除了错误之外,我似乎无法得到任何结果

这是我目前的代码

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    StrictMode.ThreadPolicy policy = new         SictMode.ThreadPolicy.Builder().permitAll().build();
    setThreadPolicy(policy);

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{
                "android.permission.ACCESS_FINE_LOCATION",
                "android.permission.ACCESS_COARSE_LOCATION"}, 1);
    } else {
        LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {


            @Override
            public void onLocationChanged(Location location) {

                double lng = location.getLongitude();
                double lat = location.getLatitude();
                ((TextView) findViewById(R.id.latTextView)).setText("" + lat);
                ((TextView) findViewById(R.id.lngTextView)).setText("" + lng);
                //String url = "http://zebedee.kriswelsh.com:8080/stations?lat=" + lat + "&lng=" + lng;
                String url = "http://zebedee.kriswelsh.com:8080/stations?lat=53.4355&lng=3.0508";
                search(url);



            }

            @Override
            public void onStatusChanged(String s, int i, Bundle bundle) {

            }

            @Override
            public void onProviderEnabled(String s) {

            }

            @Override
            public void onProviderDisabled(String s) {

            }
        });
    }


}

public String search(String url) {
    ArrayList<String> listItems = new ArrayList<String>();
    String resultsOut = "";

    try {
        URL fhr = new URL(url);
        URLConnection tc = fhr.openConnection();
        InputStreamReader isr = new InputStreamReader(tc.getInputStream());
        BufferedReader in = new BufferedReader(isr);

        String line;
        while ((line = in.readLine()) != null) {
            JSONArray ja = new JSONArray(line);
            for (int i = 0; i < ja.length(); i++) {
                JSONObject jo = (JSONObject) ja.get(i);
                listItems.add(jo.getString("StationName"));
                listItems.add(jo.getString("Lattitude"));
            }
        }
        for(String s : listItems)
        {
            resultsOut =resultsOut.concat(s+ "\n");
        }
        return resultsOut;
    }
    catch (MalformedURLException e ){e.printStackTrace();}
    catch (IOException e){e.printStackTrace();}
    catch (JSONException e){e.printStackTrace();}
    return "error";
}

public void onClick (View v) {
    TextView results = (TextView) findViewById(R.id.results);

    results.setText(search(String.valueOf(v)));
}


@Override
public void onStop() {
    super.onStop();


}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy=new SictMode.ThreadPolicy.Builder().permitAll().build();
政策(政策),;
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予
&&ActivityCompat.checkSelfPermission(此,Manifest.permission.ACCESS\u\u位置)!=PackageManager.permission\u已授予){
ActivityCompat.requestPermissions(此,新字符串[]){
“android.permission.ACCESS\u FINE\u位置”,
“android.permission.ACCESS\u\u LOCATION”},1);
}否则{
LocationManager lm=(LocationManager)getSystemService(位置服务);
lm.RequestLocationUpdate(LocationManager.GPS_提供程序,0,0,新LocationListener(){
@凌驾
已更改位置上的公共无效(位置){
double lng=location.getLongitude();
双纬度=location.getLatitude();
((TextView)findViewById(R.id.latTextView)).setText(“+lat”);
((TextView)findViewById(R.id.lngTextView)).setText(“+lng”);
//字符串url=”http://zebedee.kriswelsh.com:8080/stations?lat=“+lat+”&lng=“+lng;
字符串url=”http://zebedee.kriswelsh.com:8080/stations?lat=53.4355&lng=3.0508";
搜索(网址);
}
@凌驾
状态已更改的公共void(字符串s、int i、Bundle){
}
@凌驾
已提供已启用的公共void(字符串s){
}
@凌驾
公共无效onProviderDisabled(字符串s){
}
});
}
}
公共字符串搜索(字符串url){
ArrayList listItems=新的ArrayList();
字符串resultsOut=“”;
试一试{
URL fhr=新URL(URL);
URLConnection tc=fhr.openConnection();
InputStreamReader isr=新的InputStreamReader(tc.getInputStream());
BufferedReader in=新的BufferedReader(isr);
弦线;
而((line=in.readLine())!=null){
JSONArray ja=新JSONArray(线);
对于(int i=0;i

}

“除了错误,我似乎无法得到任何结果。”您可能应该发布该错误。另外,
StrictPolicy
…noi应该解释,当我说error时,我的意思是,textView框返回错误,因此它连接到Web服务器但没有得到任何结果。请删除对Android Studio的所有引用和标记。你的问题不是如何使用这个IDE。你仍然没有告诉我你犯了什么错误。文本视图不会返回错误。您只能在其中放置文本。您应该删除StrictMode代码,并将internet代码放置在异步任务或线程中。