Appcelerator Titanium - нужен Java WebService для получения объекта JavaScript / JSON и возврата JSON / XML - PullRequest
0 голосов
/ 19 января 2012

Мне нужен Java WebService, который можно использовать с Appcelerator Titanium .

Мне нужно иметь возможность отправить JavaScript илиОбъект JSON и получают объект JSON или XML.

Я пробовал Jax-WS, Jax-RS и Axis2, но не повезло.Однако, если вы знаете, как заставить его работать с любым из них, возможно, я сделал что-то не так и мог бы использовать помощь, чтобы заставить его работать.

В противном случае, кто-нибудь знает о хорошем варианте?

Заранее спасибо.

--- РЕДАКТИРОВАТЬ --- @ pace

Вот то, что я пытался использовать JAX-RS, но я не могу получить a JSON-объект из POST метода с ним.

   @Path("/getUserByName")
   @POST
   @Consumes("application/json")
   @Produces("application/json")
   public Person getUserByName(@PathParam("name")String name, @PathParam("lastname")String lastname) {
       return new Person(name, 23, lastname);
   }

Я вызываю WS с HTTPRequest, но это не позволяет мне отправлять JSON-объект.Есть идеи?

--- РЕДАКТИРОВАТЬ 2 ---

var xhr = Titanium.Network.createHTTPClient();
xhr.setRequestHeader('Content-Type', 'application/json');
var url = 'http://10.0.0.114:8080/ClippingExpressMobileWS-JaxRS/usuario/getUsuarioPorNome';
var method = 'POST';

xhr.open('POST', url);

xhr.onload = function() { 

    var json = this.responseText;

    //This is just a printf() or a System.out.println()
    Ti.API.info(json);
}
xhr.onerror = function(e) { 

    alert(e); 
}

var obj = {name: 'Roger', abe: 22, lastname: 'Waters'};

//Then I've tried this:
xhr.send(obj); //This doesn't give any errors on the WS, but the xhr.onerror function is called.
//And this:
xhr.send(JSON.stringify(obj)); //This gives the error blow.

- Ошибка, генерируемая xhr.send (JSON.stringify (obj))

A message body reader for Java class br.com.clippingexpressmobilews.entidades.Pessoa, and Java type class br.com.clippingexpressmobilews.entidades.Pessoa, and MIME media type application/octet-stream was not found.
The registered message body readers compatible with the MIME media type are:
[1/20/12 2:17:59 PM] Natália Oliveira: Jan 20, 2012 2:11:29 PM com.sun.jersey.spi.container.ContainerRequest getEntity
SEVERE: A message body reader for Java class br.com.clippingexpressmobilews.entidades.Pessoa, and Java type class br.com.clippingexpressmobilews.entidades.Pessoa, and MIME media type application/octet-stream was not found.
The registered message body readers compatible with the MIME media type are:
application/octet-stream ->
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.RenderedImageProvider
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
  com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
  com.sun.jersey.core.impl.provider.entity.EntityHolderReader
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy
* 1037Опять какие-нибудь идеи?И большое спасибо за помощь!

1 Ответ

0 голосов
/ 20 января 2012

Попробуйте изменить сигнатуру вашего метода на что-то вроде ниже (я думаю, на getName и getLastname). Аннотации PathParam используются для получения значений из URL, но вы, похоже, этого не делаете.

@Path("/getUserByName")
@POST
@Consumes("application/json")
@Produces("application/json")
public Person getUserByName(Person input) {
   return new Person(inpug.getName(), 23, input.getLastname());
}
...