FTP и HTTP протоколы. Scheme 'ftp' not registered
Добавлено: 31 авг 2014, 14:39
Всем привет! Долгое время было лень регистрироваться на форуме, не было особой нужды) Но сейчас попалась задачка, которую никак не могу решить. Есть класс JSONParser с помощью которого я должен с сервера получать JSONObject:
В учебных целях я создал виртуальную площадку на бесплатном хосте. Туда закинул php файл с данными в JSON формате. Проблема вот в чем: как я понимаю (может я не до конца понимаю) передача данных в моем случае должна осуществляться по HTTP протоколу, а адрес виртуальной площадки у меня следующий ftp://193.107.17.103/
Т.е. , как я понимаю, передача данных осуществляется по FTP протоколу, и поэтому у меня выбрасывает следующие исключение:
Что же в таком случае делать? Может есть способ, чтобы как-то изменить протокол передачи данных с FTP на HTTP? или использовать какую-то другую библиотеку? Ссори, если в моей речи присутствует какая-то бредятина (с сетевой поддержкой для Android только недавно начала разбираться).
Код: Выделить всё
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public JSONParser() {
}
public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) {
try {
if (method == "POST") {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost();
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} else if (method == "GET") {
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e(TAG, "Error converting result " + e.toString());
}
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e(TAG, "Error parsing data " + e.toString());
}
return jObj;
}
}
Т.е. , как я понимаю, передача данных осуществляется по FTP протоколу, и поэтому у меня выбрасывает следующие исключение:
Код: Выделить всё
java.lang.IllegalStateException: Scheme 'ftp' not registered.
at org.apache.http.conn.scheme.SchemeRegistry.getScheme(SchemeRegistry.java:71)
at org.apache.http.impl.conn.DefaultHttpRoutePlanner.determineRoute(DefaultHttpRoutePlanner.java:111)
at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:710)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:356)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
...Что же в таком случае делать? Может есть способ, чтобы как-то изменить протокол передачи данных с FTP на HTTP? или использовать какую-то другую библиотеку? Ссори, если в моей речи присутствует какая-то бредятина (с сетевой поддержкой для Android только недавно начала разбираться).