Java servlet气象服务的服务器地址或IP目前仍然是硬编码的
大家好,Java和Android专家们,我真的可以利用你们的帮助为我的学校做一些项目,因为我没有任何线索 在活动ServletWeatherAPI中,ServletWeatherService的服务器地址或IP当前仍然是硬编码的,例如: 在MultiWeatherApp的设置选项卡中,我需要添加一个选项来指定我的服务器的地址或IP(不带servlet路径)/WeatherService/ 天气?)。 此气象服务的web请求应使用存储在SharedReferences中的地址 有人知道我该怎么做吗?因为我没有。 我知道如何将该选项添加到preferences.xml中,但不知道其他选项。 我从github附加我的项目和ServletWeatherAPI调用。 任何帮助都将不胜感激,我不是专家,所以伪代码将非常有助于理解它。 }Java servlet气象服务的服务器地址或IP目前仍然是硬编码的,java,android,web-services,servlets,sharedpreferences,Java,Android,Web Services,Servlets,Sharedpreferences,大家好,Java和Android专家们,我真的可以利用你们的帮助为我的学校做一些项目,因为我没有任何线索 在活动ServletWeatherAPI中,ServletWeatherService的服务器地址或IP当前仍然是硬编码的,例如: 在MultiWeatherApp的设置选项卡中,我需要添加一个选项来指定我的服务器的地址或IP(不带servlet路径)/WeatherService/ 天气?)。 此气象服务的web请求应使用存储在SharedReferences中的地址 有人知道我该怎么
如果有人感兴趣,我已经找到了解决方案,这是我的git:
我知道如何将选项添加到preferences.xml中。不清楚的。什么意思?为什么你不能使用它呢?在它的设计点中添加设置菜单(在preferences.xml中设置)的选项我很清楚,但如何编程却不清楚。不清楚你想要编程什么以及你有什么问题。我会更清楚地说:那么你很难更改baseUrl?只需添加一个baseUrl参数,就可以在构造函数中实现这一点。将private ServletWeatherAPI(字符串queryString)
更改为private ServletWeatherAPI(字符串baseUrl,字符串queryString)
。并在构造函数成员中添加“this.baseUrl=baseUrl;”在此之后,您将看到您应该声明baseUrl不同于私有最终静态字符串baseUrl
。
Private final static String baseURL = "http://192.168.178.21:8080/WeatherService/weather? ";
public class ServletWeatherAPI implements IWeatherAPI {
private final static String baseURL = "http://localhost:8080/WeatherService/weather?";
private JSONObject weatherdata;
private ServletWeatherAPI(String queryString) throws
IOException, JSONException {
String result = HttpRequest.request(baseURL + queryString);
weatherdata = new JSONObject(result);
}
public static IWeatherAPI fromLocationName(String locationName) throws IOException, JSONException {
return new ServletWeatherAPI("q=" + URLEncoder.encode(locationName, "UTF-8"));
}
public static IWeatherAPI fromLatLon(double lat, double
lon) throws IOException, JSONException {
return new ServletWeatherAPI("lat=" + lat + "&lon=" + lon);
}
@Override
public double getTemperature() throws JSONException {
return weatherdata.getDouble("tempC");
}
@Override
public String getDescription() throws JSONException {
return weatherdata.getString("description");
}
@Override
public String getError() {
return "";
}
@Override
public String getProviderInfo() {
return "ServletWeatherService";
}
@Override
public String getIconPath() throws JSONException {
return "serlvetweatherservice/" +
weatherdata.getString("icon");
}