在Android上编程上传.json文件;收到.json回复

时间:2011-03-03 13:59:33

标签: android json http

我应该在android中开发一个程序,将.json文件上传到webservice&以.json格式获取回复解析它。任何人都可以告诉我如何上传json文件&任何带有.json文件的web服务,验证它和&返回一个.json文件?感谢。

2 个答案:

答案 0 :(得分:1)

理想的设置是

Android App< - > GAE

如果你需要web服务来检查你的json文件...只需将服务器上的json内容读入JSON对象,如果没有抛出异常,你就可以使用对客户端的响应。< / p>

我提供了双方使用Restlet(restlet.org)的代码。


Android应用


Client client = new Client(Protocol.HTTP);
Request req = new Request();
req.setMethod(Method.POST); // can be Method.GET
req.setResourceRef(new Reference(/* SERVER URL */+ "/jsonservice"));
req.getCookies().add(GAuth.getCookie());
/* Build your JSONObject */
req.setEntity(/* JSONObject */.toString(), MediaType.APPLICATION_JSON);
req.getClientInfo().getAcceptedMediaTypes().add(new Preference<MediaType>(MediaType.APPLICATION_JSON));
Response resp = client.handle(req);
if (resp.getStatus() == Status.SUCCESS_OK)
{
    // resp.getEntity().getText() -> The JSON string returned by GAE
    JSONObject jo=new JSONObject(resp.getEntity().getText());
    /* Use your JSON object */
}

GAE App


  

GAE:war / WEB-INF / web.xml

<!-- Servlets -->
<servlet>
  <servlet-name>MyApplication</servlet-name>
  <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
  <init-param>
      <param-name>org.restlet.application</param-name>
      <param-value>com.mypackage.MyApplication</param-value>
  </init-param>
</servlet>

<!-- Servlet Mappings -->
<servlet-mapping>
  <servlet-name>MyApplication</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>
     
     

Restlet:MyApplication.java

package com.mypackage;

public class MyApplication extends Application
{
  @Override
  public Restlet createInboundRoot()
  {
      Router router = new Router(getContext());
      router.attach("/jsonservice", MyJsonService.class);
      return router;
  }
}
     
     

Restlet:MyRouter.java

package com.mypackage;

public class MyJsonService extends ServerResource
{
  @Post("json:json") // can be @Get("json")
  public Representation jsonProcessor(Representation entity)
  {
      Representation resp = null;
      JSONObject req = (new JsonRepresentation(entity)).getJsonObject();
      /* 
          Do Someting with the JSON object
          .....
          .....
          .....
          Build your JSON response object. 
          You will use this object below.
      */
      setStatus(Status.SUCCESS_OK);
      resp = new JsonRepresentation(/* JSONObject */.toString());
      return resp;
  }
}

答案 1 :(得分:0)

上传json文件与上传任何其他文件类型没有区别。有一个例子here。它解释了如何将文件上传到php服务器。

http://json.org/有一个java库,可以用来创建/解析json对象。正如下面的注释所指出的,android中包含一个json库。