Android Groovy Веб-сервис - PullRequest
       9

Android Groovy Веб-сервис

1 голос
/ 22 апреля 2011

Все еще нет ответа ... у кого-нибудь есть что-нибудь лучше? Хорошо сложный вопрос 2 части здесь. У меня есть страница регистрации Android, которая собирает информацию об имени клиента, адресе, электронной почте, телефоне и т. Д. Когда они нажимают кнопку Отправить, я хочу отправить эти данные на веб-сервис, который я создаю с помощью Groovy, Grails и Hibernate. Итак, мой первый вопрос, как я могу отправить эти данные на мой веб-сервис, можно ли привести пример?

Как только я отправляю эти данные в веб-сервис, как сделать сложную вставку в 2 таблицы из моих скриптов Groovy, где таблица клиентов имеет идентификатор таблицы адресов? Это устаревшие таблицы, поэтому стандартные домены не работают, поскольку имя столбца id не является стандартным «id». и отношение - одна строка клиента на строку адресной книги.

Таблица клиентов имеет идентификатор, имя, адрес электронной почты, имя пользователя, пароль и address_id Таблица адресов содержит идентификатор, адрес, город, почтовый индекс ...

вот мои домены для адресной книги и клиентов:

class AddressBook {
String entryStreetAddress
String entryStreetAddress2
String entryPostcode
String entryCity
Integer entryState
Integer entryCountryId

static mapping = {
    id column: "address_book_id"
    version false
}

 }

Вот уведомление о прежних таблицах клиентов customerDefaultAddressId - это address_book_id в предыдущем домене:

class Customers {
String customersFirstname
String customersMname
String customersLastname
String customersEmailAddress
Integer customersDefaultAddressId  //address id joins AddressBook to Customers
String customersTelephone
String customersUsername
String customersPassword

static mapping = {
    id column: "customers_id"
    version false
}
}

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

Вы можете использовать HttpClient для отправки данных в ваш веб-сервис.

Вы должны решить, какие отношения вы хотите установить между Клиентами и Адресной книгой, и отразить их в классах вашего домена.Например, если вы хотите двунаправленные отношения «многие-к-одному» между клиентами и адресной книгой, классы вашего домена будут выглядеть так:

class Customers {
    AddressBook address
    ...
}

class AddressBook {
    static belongsTo = [ customer:Customers ]
    ...
}

Затем, чтобы выполнить вставку в свой контроллер, вы должны сделать что-то вродеthis:

def customer = new Customers(param)
customer.address = new AddressBook(param)
customer.save()

Чтобы URL кодировать поля в вашей деятельности, предполагая, что у вас есть ссылки на ваши виджеты в переменных-членах, сделайте что-то вроде этого:

List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("firstname", mFirstNameTextEdit.getText()));
param.add(new BasicNameValuePair("gender", (String) mGenderSpinner.getSelectedItem()));
// ... and so on for each widget
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(param, "UTF-8");
HttpPost post = new HttpPost("http://your.webservice.url");
post.setEntity(entity);
0 голосов
/ 01 сентября 2011

Хорошо, так как никто не ответил на это, я отвечу сам. То, что я сделал, было довольно легко, как только я правильно настроил данные в объекте JSON, назвав имя индекса так же, как имя столбца. Мне удалось добавить смесь объектов таблицы клиентов и объектов таблицы адресов. После того, как вы вызовете скрипт URI groovy, вы можете легко сохранить его в каждой таблице с минимальными усилиями. Вот настройка объекта JSON в Android Activity в методе OnClick при нажатии кнопки сохранения:

public void onClick(View v) {
.......

JSONObject cust = new JSONObject();
    try {
        cust.put("customersFirstname", customer.getCustomers_firstname());
        cust.put("customersMname", customer.getCustomers_mname());
        cust.put("customersLastname", customer.getCustomers_lastname());
        cust.put("customersEmailAddress", customer.getCustomers_email_address());
        cust.put("customersTelephone", customer.getCustomers_telephone());
        cust.put("customersUsername", customer.getCustomers_username());
        cust.put("customersPassword", customer.getCustomers_password());
        cust.put("customersNewsletter", 0);

        cust.put("entryFirstname", customer.getCustomers_firstname());
        cust.put("entryLastname", customer.getCustomers_lastname());
        cust.put("entryStreetAddress", address.getEntryStreetAddress());
        cust.put("entryStreetAddress2", address.getEntryStreetAddress2());
        cust.put("entryCity", address.getEntryCity());
        cust.put("entryState", address.getEntryState());
        cust.put("entryPostcode", address.getEntryPostcode());
        cust.put("entryCountryId", address.getEntryCountryId());
        cust.put("entryZoneId", address.getEntryCountryId());

        PostJson.sendJSON("URL/webservices", cust);

.........
}

Затем на стороне Groovy для моих веб-сервисов все, что я делаю, чтобы сохранить информацию о клиенте для таблицы:

def input = request.JSON
def instance = new Customers(input)
instance.save()
...