public void getCategory() {
String sResult = "";
try {
oUrl = new URL(sUrl);
sParams = "token="+sToken;
oConnect = (HttpURLConnection) oUrl.openConnection();
oConnect.setDoInput(true);
oConnect.setDoOutput(true);
oConnect.setRequestProperty("Pragma","no-cache");
oConnect.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
oConnect.setRequestProperty("Content-Length", Integer.toString(sParams.length()));
oReader = new BufferedReader(new InputStreamReader(oConnect.getInputStream()));
while ((sLine = oReader.readLine()) != null) {
sResult += sLine;
}
oReader.close();
} catch (Exception error){
System.out.print(error.toString());
}
System.out.print(sResult);
}
Как заметил @Victor, параметры GET-запроса - это параметры URL, идущие после символа ?, разделённые символом &, состоящие из имени параметра, символа = и значения параметра, а так же соответствующим образом кодированные.
Наиболее удобный, на мой взгляд, способ конструирования URL с параметрами - это URLBuilder. Люблю я fluent interface. Поиск в Google по запросу "java urlbuilder" возвращает немало результатов, в том числе URLBuilder, входящий в состав Apache HttpClient. Его и рекомендую использовать. Впрочем, если есть желание понять принцип, то можно и свой велосипед изобрести:
public class URLBuilder {
private String url;
private List<String> params;
public URLBuilder() {
url = "";
params = new ArrayList<>();
}
public URLBuilder(String url) {
this();
this.url = url;
}
public URLBuilder withProtocol(String protocol) throws IllegalStateException {
if (!url.isEmpty())
throw new IllegalStateException("Метод должен вызываться первым");
url = protocol + "://";
return this;
}
public URLBuilder withHost(String host) {
if (url.isEmpty())
throw new IllegalStateException("Не определён протокол");
url += host;
return this;
}
public URLBuilder withPath(String ... path) {
if (!url.endsWith("/"))
url += "/";
if (path.length > 0)
url += String.join("/", path);
else
url += path;
return this;
}
public URLBuilder withParam(String name, String value) throws UnsupportedEncodingException {
String charset = Charset.defaultCharset().name();
String encodedName = URLEncoder.encode(name, charset);
String encodedValue = URLEncoder.encode(value, charset);
params.add(encodedName + "=" + encodedValue);
return this;
}
public URL build() throws MalformedURLException {
return new URL(this.toString());
}
@Override
public String toString() {
return url + "?" + String.join("&", params);
}
}
Естественно, класс для простоты примера предельно примитивен и не учитывает множество факторов, но в простых случаях задачу решает:
URL url = new URLBuilder("https://ru.stackoverflow.com/unanswered/tagged/")
.withParam("page", "2")
.withParam("tab", "новые")
.build();
Что даст https://ru.stackoverflow.com/unanswered/tagged/?page=2&tab=%ED%EE%E2%FB%E5
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости