Страница 1 из 1

FTP и HTTP протоколы. Scheme 'ftp' not registered

Добавлено: 31 авг 2014, 14:39
Леонид_Упорный
Всем привет! Долгое время было лень регистрироваться на форуме, не было особой нужды) Но сейчас попалась задачка, которую никак не могу решить. Есть класс JSONParser с помощью которого я должен с сервера получать JSONObject:

Код: Выделить всё

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;
		}
	}

В учебных целях я создал виртуальную площадку на бесплатном хосте. Туда закинул php файл с данными в JSON формате. Проблема вот в чем: как я понимаю (может я не до конца понимаю) передача данных в моем случае должна осуществляться по HTTP протоколу, а адрес виртуальной площадки у меня следующий ftp://193.107.17.103/
Т.е. , как я понимаю, передача данных осуществляется по 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 только недавно начала разбираться). :mrgreen:

Re: FTP и HTTP протоколы. Scheme 'ftp' not registered

Добавлено: 31 авг 2014, 14:57
altwin
Трудно удержаться от злобных комментариев если честно.... :)
Что значит php файл с данными в JSON ? И каким образом вы вообще расчитываете по ftp получить JSON? Покажите код фашего сервера.

Re: FTP и HTTP протоколы. Scheme 'ftp' not registered

Добавлено: 31 авг 2014, 15:13
Леонид_Упорный
altwin писал(а):Трудно удержаться от злобных комментариев если честно.... :)
Что значит php файл с данными в JSON ? И каким образом вы вообще расчитываете по ftp получить JSON? Покажите код фашего сервера.
Ну я имел в виду в формате json

Код: Выделить всё

{"data":[
{
"id":"1",
"name":"Петр",
"surname":"Иванов",
"faculty":"Автоматики и вычислительной техники",
"course":"2"
},

{
"id":"2",
"name":"Василий",
"surname":"Петров",
"faculty":"Радиоэлектроники",
"course":"1"
},

{
"id":"3",
"name":"Леонид",
"surname":"Сурков",
"faculty":"Гуманитарных наук",
"course":"3"
},

{
"id":"4",
"name":"Анна",
"surname":"Ахматова",
"faculty":"Автоматики и вычислительной техники",
"course":"1"
},

{
"id":"5",
"name":"Катя",
"surname":"Беззубко",
"faculty":"Морских технологий и судоходства",
"course":"1"
}
]
}

:)
И я только что разобрался)
Оказывается нужно было создать директорию WWW и в нее уже закидывать свои скрипты. И тогда мой файл для посетителей сайта будет виден как http://193.107.17.103/login.php

:)

Re: FTP и HTTP протоколы. Scheme 'ftp' not registered

Добавлено: 31 авг 2014, 15:21
altwin
Леонид_Упорный писал(а):
altwin писал(а):Трудно удержаться от злобных комментариев если честно.... :)
Что значит php файл с данными в JSON ? И каким образом вы вообще расчитываете по ftp получить JSON? Покажите код фашего сервера.
Ну я имел в виду в формате json

Код: Выделить всё

{"data":[
{
"id":"1",
"name":"Петр",
"surname":"Иванов",
"faculty":"Автоматики и вычислительной техники",
"course":"2"
},

{
"id":"2",
"name":"Василий",
"surname":"Петров",
"faculty":"Радиоэлектроники",
"course":"1"
},

{
"id":"3",
"name":"Леонид",
"surname":"Сурков",
"faculty":"Гуманитарных наук",
"course":"3"
},

{
"id":"4",
"name":"Анна",
"surname":"Ахматова",
"faculty":"Автоматики и вычислительной техники",
"course":"1"
},

{
"id":"5",
"name":"Катя",
"surname":"Беззубко",
"faculty":"Морских технологий и судоходства",
"course":"1"
}
]
}

:)
И я только что разобрался)
Оказывается нужно было создать директорию WWW и в нее уже закидывать свои скрипты. И тогда мой файл для посетителей сайта будет виден как http://193.107.17.103/login.php

:)
json и php - это абсолютно разные вещи, для того чтобы из php отдать json вам нужно послать заголовки, использовать функцию для преобразования формата, отправить и уже на клиенте обрабатывать. Пример:
[syntax=php]
$url = "your url";
$content = json_encode("your data to be sent");

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);

$json_response = curl_exec($curl);

$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ( $status != 201 ) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
}


curl_close($curl);

$response = json_decode($json_response, true);
[/syntax]
В любом случае перед тем, как что -то пытаться делать стоит внимательно изучить хотябы это - http://habrahabr.ru/post/38730/

Re: FTP и HTTP протоколы. Scheme 'ftp' not registered

Добавлено: 31 авг 2014, 15:41
Леонид_Упорный
Спасибо) но я и так стараюсь сначала все сам изучить и если не выходит уже обращаюсь с вопросами :) туго мне эта тема дается хе хе)