Android的RestEasy的移动样本客户机 [英] Android resteasy-mobile sample client

查看:185
本文介绍了Android的RestEasy的移动样本客户机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新的Andr​​oid的编程,我需要实现一个Android RestEasy的移动客户端。我需要与远程JAX-RS Web服务连接。我已经寻找以防万一,我无法找到一个简单的示例客户端。 你能告诉我怎样才能让一个Android RestEasy的移动客户端?

I'm new in Android programming, and I need to implement an Android resteasy-mobile client. I need to connect with a remote JAX-RS web service. I've searching arround and I can't find a simple sample client. Can you tell me how can I make an Android resteasy-mobile client?

感谢你在前进。

推荐答案

最后,我决定实施一个Android JSON(杰克逊)客户端蒙山泽西服务器。 这是我的code。如果有人需要知道是怎么回事:

Finally, I've decided to implement an Android json (Jackson) client whith a Jersey server. Here's my code if someone needs to know how it is:

服务器:

package com.sl;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import com.sl.model.pojo.UserLocation;

@Path("/json/service")
public class JSONService {

    @GET
    @Path("/get")
    @Produces(MediaType.APPLICATION_JSON)
    public UserLocation getTrackInJSON() {

        UserLocation ul = new UserLocation();
        ul.setCodigo("1");
        ul.setLatitud(Float.valueOf("1.1"));
        ul.setLongitud(Float.valueOf("1.2"));

        return ul;

    }

    @POST
    @Path("/post")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response createTrackInJSON(UserLocation userLocation) {

        String result = "Record saved.";
        return Response.status(201).entity(result).build();

    }

}

的web.xml

web.xml

<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Restful Web Application</display-name>

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
        <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.sl</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

客户端:

ReceiveFeedTask.java

ReceiveFeedTask.java

package android.jaxrs;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.codehaus.jackson.map.ObjectMapper;

import android.jaxrs.model.pojo.UserLocation;
import android.os.AsyncTask;
import android.util.Log;

public class RetreiveFeedTask extends AsyncTask<String, String, Boolean> {

    private static String TAG = "ReceiveFeedTask";
    private  String jaxrsmessage = null;

    private static String IP = "191.162.1.107"; //IP CASA
    //private static String IP = "10.0.2.2"; //IP LOCALHOST

    private static String DIRECCION_GET = "http://" + IP + ":8080/ServidorLoc/rest/json/service/get";
    private static String DIRECCION_POST = "http://" + IP + ":8080/ServidorLoc/rest/json/service/post";

    private final ObjectMapper mapper = new ObjectMapper();

    @Override
    protected Boolean doInBackground(String... params) {
        HttpClient httpclient = null;


        try {
             android.os.Debug.waitForDebugger();
             httpclient = new DefaultHttpClient();


             HttpGet request = new HttpGet(DIRECCION_GET);

             request.addHeader("Content-Type", "application/json");
             request.addHeader("Accept", "application/json");
             HttpResponse response = httpclient.execute(request);
             HttpEntity entity = response.getEntity();
             InputStream instream = entity.getContent();
             jaxrsmessage = read(instream);
             Log.d(TAG, jaxrsmessage);


             //POST
             UserLocation ul= new UserLocation(); 
             ul.setCodigo("2");
             ul.setLatitud(Float.valueOf("2.1"));
             ul.setLongitud(Float.valueOf("2.2"));

             String json = mapper.writeValueAsString(ul);



             HttpPost post = new HttpPost(DIRECCION_POST);
             post.setHeader("Content-Type", "application/json");
             StringEntity se = new StringEntity(json);
             post.setEntity(se);
             HttpResponse httpResponse = new DefaultHttpClient().execute(post);
             String retSrc = EntityUtils.toString(httpResponse.getEntity());
             Log.d(TAG, retSrc);


        } catch (ClientProtocolException e) {
            Log.e(TAG, "Se ha producido un error: " + e.toString() + "\nMensaje: " + e.getMessage());
        } catch (IOException e) {
            Log.e(TAG, "Se ha producido un error: " + e.toString() + "\nMensaje: " + e.getMessage());
        } catch (Exception e){
            Log.e(TAG, "Se ha producido un error: " + e.toString() + "\nMensaje: " + e.getMessage());
        }finally {
            httpclient.getConnectionManager().shutdown();
        }
        return true;
    }

    @Override
    protected void onPostExecute(Boolean result) {

    }

    private static String read(InputStream instream) {
        StringBuilder sb = null;
        try {
             sb = new StringBuilder();
             BufferedReader r = new BufferedReader(new InputStreamReader(
                   instream));
             for (String line = r.readLine(); line != null; line = r.readLine()) {
                sb.append(line);
             }

            instream.close();
            r.close();

        } catch (IOException e) {
            Log.e(TAG, "Se ha producido un error: " + e.toString() + "\nMensaje: " + e.getMessage());
        }
        return sb.toString();

   }
}

AndroidManifest.xml中

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="android.jaxrs"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

     <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
        <activity
            android:name="android.jaxrs.AndroidJAXRSClient"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这就是全部! :)

That's all!!! :)

这篇关于Android的RestEasy的移动样本客户机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆