Java Android Studio GPS连接从web服务器返回结果
我试图连接到Web服务器,从JSON格式获取特定信息,并将其显示在emulator/Android手机上的文本框中,但除了错误之外,我似乎无法得到任何结果 这是我目前的代码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
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代码放置在异步任务或线程中。