android и WCF
android и WCF
кто знает как можно получить доступ из андроид приложение к серверу WCF?
есть какие нибудь примеры ?
есть какие нибудь примеры ?
Re: android и WCF
так же, как к любому другому по предусмотренному сервером протоколу коммуникации... в большинстве своем REST, тип сервера никакого значения не имеет.
Re: android и WCF
Есть какие нибудь простые примеры как делать запрос серверу?
У меня сервер возвращает JSON
У меня сервер возвращает JSON
Re: android и WCF
Код: Выделить всё
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);
}
Re: android и WCF
Или через 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
}
}
}
Re: android и WCF
Donart, метод doInBackground и onPostExecute где надо вызывать ?
Re: android и WCF
Нигде, они сами вызываются в AsynkTask.
Чтоб было более понятно, разберите урок 86 http://startandroid.ru/ru/uroki/vse-uro ... rimer.html и последующие
Чтоб было более понятно, разберите урок 86 http://startandroid.ru/ru/uroki/vse-uro ... rimer.html и последующие
Re: android и WCF
как можно узнать что работает или нет?
результат можно выводит на TextView
результат можно выводит на TextView
Re: android и WCF
Переменная content это и есть Ваш ответ от сервера в строковом виде. Можете вывести его куда угодно.
Re: android и WCF
все понял.
Но не работает.
У меня локальный сервер "http://localhost:61974/Service1.svc/gett/f"
в браузере работает. В приложение так же написать или по другому ?
Но не работает.
У меня локальный сервер "http://localhost:61974/Service1.svc/gett/f"
в браузере работает. В приложение так же написать или по другому ?