android и WCF

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Khan
Сообщения: 15
Зарегистрирован: 15 апр 2014, 20:22

android и WCF

Сообщение Khan » 19 апр 2014, 11:48

кто знает как можно получить доступ из андроид приложение к серверу WCF?
есть какие нибудь примеры ?

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: android и WCF

Сообщение altwin » 19 апр 2014, 13:14

так же, как к любому другому по предусмотренному сервером протоколу коммуникации... в большинстве своем REST, тип сервера никакого значения не имеет.
Изображение

Khan
Сообщения: 15
Зарегистрирован: 15 апр 2014, 20:22

Re: android и WCF

Сообщение Khan » 21 апр 2014, 21:59

Есть какие нибудь простые примеры как делать запрос серверу?
У меня сервер возвращает JSON

Mykola
Сообщения: 132
Зарегистрирован: 26 июл 2013, 12:06

Re: android и WCF

Сообщение Mykola » 22 апр 2014, 12:16

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

  
    public static final int CONNECTION_TIMEOUT = 30000;
    private static final String CONTENT_TYPE_VALUE_JSON = "application/json; charset=utf-8";
    private static final String HEADER_LOCALE = "Locale";
    private static final String HEADER_CONTENT_TYPE = "Content-Type";
    private static final String CHARSET = "UTF-8";
  
public InputStream executePost(final String url, String data)
	   {
	Log.d(TAG, url);
	HttpPost httpPost = new HttpPost(url);
	if (data != null) {
	    try {
		httpPost.setEntity(new StringEntity(data, CHARSET));
	    } catch (UnsupportedEncodingException e) {
	
	    }
	}
	return execute(httpPost);
    }

private InputStream execute(HttpRequestBase http)  {
	setHeadersAndParam(http);
	HttpContext localContext = new BasicHttpContext();
	try {
	    mBuilder.setResponse(mBuilder.getClient().execute(http,
		    localContext));
	    Log.d(TAG, "status code: "
		    + mBuilder.getResponse().getStatusLine().getStatusCode());
	    if (mBuilder.getResponse().getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
		return mBuilder.getResponse().getEntity().getContent();
	    } else {
		return null;
	    }
	} catch (ClientProtocolException e) {
	    Log.e(TAG, e.getMessage());
	} catch (IOException e) {
	    if (e != null)
		Log.e(TAG, e.getMessage());
	}
    }

    private void setHeadersAndParam(HttpRequestBase http) {

	http.setHeader(HEADER_CONTENT_TYPE, CONTENT_TYPE_VALUE_JSON);
	http.setHeader(HEADER_LOCALE, Locale.getDefault().getLanguage());

	HttpParams httpParameters = new BasicHttpParams();

	HttpConnectionParams.setConnectionTimeout(httpParameters,
		getConnectionTimeOut());
	HttpConnectionParams.setSoTimeout(httpParameters,
		getConnectionTimeOut());
	http.setParams(httpParameters);
    }

    public InputStream executeGet(final String url)  {
	Log.d(TAG, url);
	HttpGet httpGet = new HttpGet(url);
	return execute(httpGet);
    }

Donart
Сообщения: 114
Зарегистрирован: 06 ноя 2013, 08:59

Re: android и WCF

Сообщение Donart » 22 апр 2014, 12:37

Или через AsynkTask

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

public class MainActivity extends FragmentActivity {

	private String content;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fragment_main);
		new ResponseTask().execute("http://www.Ваш url.com");

	}

	class ResponseTask extends AsyncTask<String, String, String> {

		@Override
		protected String doInBackground(String... urls) {
			try {
				// запрос на сервер
				DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
				ResponseHandler<String> responseHandler = new BasicResponseHandler();
				// post запрос
				HttpPost httpPost = new HttpPost(urls[0]);
				//ответ от сервера
				content = defaultHttpClient.execute(httpPost, responseHandler);

			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

			return content;
		}

		@Override
		protected void onPostExecute(String content) {
			super.onPostExecute(content);
                                  тут уже обрабатывайте свой JSON

		}
}
}

Khan
Сообщения: 15
Зарегистрирован: 15 апр 2014, 20:22

Re: android и WCF

Сообщение Khan » 23 апр 2014, 18:32

Donart, метод doInBackground и onPostExecute где надо вызывать ?

Donart
Сообщения: 114
Зарегистрирован: 06 ноя 2013, 08:59

Re: android и WCF

Сообщение Donart » 23 апр 2014, 19:26

Нигде, они сами вызываются в AsynkTask.
Чтоб было более понятно, разберите урок 86 http://startandroid.ru/ru/uroki/vse-uro ... rimer.html и последующие

Khan
Сообщения: 15
Зарегистрирован: 15 апр 2014, 20:22

Re: android и WCF

Сообщение Khan » 23 апр 2014, 19:59

как можно узнать что работает или нет?
результат можно выводит на TextView

Donart
Сообщения: 114
Зарегистрирован: 06 ноя 2013, 08:59

Re: android и WCF

Сообщение Donart » 23 апр 2014, 20:14

Переменная content это и есть Ваш ответ от сервера в строковом виде. Можете вывести его куда угодно.

Khan
Сообщения: 15
Зарегистрирован: 15 апр 2014, 20:22

Re: android и WCF

Сообщение Khan » 23 апр 2014, 20:16

все понял.
Но не работает.
У меня локальный сервер "http://localhost:61974/Service1.svc/gett/f"
в браузере работает. В приложение так же написать или по другому ?

Ответить