Java 连接到远程服务器的Android应用程序

Java 连接到远程服务器的Android应用程序,java,android,android-2.2-froyo,Java,Android,Android 2.2 Froyo,我正在尝试在平台2.2 Froyo上构建一个Android应用程序。该应用程序应该连接到远程服务器,从中获取数据,并以不同的语言向用户显示 那么我的问题是——我需要学习哪些技术才能 构建上述应用程序。 注意-我已经安装了Android平台,并构建了简单的应用程序,如Hello,world。我懂Java。我也在使用Eclipse 谢谢你的回答。请不要粗鲁的评论 //--------------使用HTTP协议连接到web的代码-----------------// package in.and

我正在尝试在平台2.2 Froyo上构建一个Android应用程序。该应用程序应该连接到远程服务器,从中获取数据,并以不同的语言向用户显示

  • 那么我的问题是——我需要学习哪些技术才能 构建上述应用程序。
注意-我已经安装了Android平台,并构建了简单的应用程序,如Hello,world。我懂Java。我也在使用Eclipse

谢谢你的回答。请不要粗鲁的评论

//--------------使用HTTP协议连接到web的代码-----------------//

package in.androidbook.Networking;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity 
{
    ImageView img;
    /* This is for making asynchronous calls to ensure that connection to server will not return until data is received */

    private class BackgroundTask extends AsyncTask<String, Void, Bitmap>
    {
        protected Bitmap doInBackground(String...url)
        {
            Bitmap bitmap = DownloadImage(url[0]);
            return bitmap;
        }

        protected void onPostExecute(Bitmap bitmap)
        {
            ImageView img = (ImageView) findViewById(R.id.img);
            img.setImageBitmap(bitmap);         
        }
    }
    // Code for making HTTP connection
    private InputStream OpenHttpConnection(String urlString) throws IOException 
    {
        InputStream in = null;
        int response = -1;

        URL url = new URL(urlString);//We take an object of class URL
        URLConnection conn = url.openConnection(); //Create a connection object and open the connection

        if(!(conn instanceof HttpURLConnection)) throw new IOException("Not an Http connection");
        try
        {
            HttpURLConnection httpConn = (HttpURLConnection) conn; //httpConn object is assigned the value of conn. Typecasting is done to avoid conflict.
            httpConn.setAllowUserInteraction(false);
            httpConn.setInstanceFollowRedirects(true);
            httpConn.setRequestMethod("GET");
            httpConn.connect();
            response = httpConn.getResponseCode();

            if(response == HttpURLConnection.HTTP_OK)
                in = httpConn.getInputStream();
        }
        catch (Exception ex)
        {
            throw new IOException("Error connecting");
        }
        return in;
    }   
        //------------------------------------------ OpenHttpConnection method completed----------------------------------------------------------//
    //----------------------------------------------------------------------------------------------------------------------------------------------------------------//
    //-------------------------------Method to download an image--------------------------------------------------------------------------------------//
    private Bitmap DownloadImage(String URL)
    {
        Bitmap bitmap = null;
        InputStream in = null;
        try
        {
            in = OpenHttpConnection(URL);
            bitmap = BitmapFactory.decodeStream(in);
            in.close();
        }
        catch(IOException e1)
        {
            Toast.makeText(this, e1.getLocalizedMessage(), Toast.LENGTH_LONG).show();
            //Toast displays a short msg to user. this refers to current object.
            e1.printStackTrace();
        }
        return bitmap;
    }  


/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       Bitmap bitmap = DownloadImage("http://i.zdnet.com/blogs/3-29-androids.jpg");
        img = (ImageView) findViewById(R.id.img);
        img.setImageBitmap(bitmap);
    }
}
包in.androidbook.Networking;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.net.URLConnection;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.parserConfiguration异常;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
导入android.app.Activity;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.widget.ImageView;
导入android.widget.Toast;
公共类MainActivity扩展了活动
{
图像视图img;
/*这用于进行异步调用,以确保在收到数据之前不会返回到服务器的连接*/
私有类BackgroundTask扩展了AsyncTask
{
受保护位图doInBackground(字符串…url)
{
位图位图=下载图像(url[0]);
返回位图;
}
受保护的void onPostExecute(位图)
{
ImageView img=(ImageView)findViewById(R.id.img);
设置图像位图(位图);
}
}
//用于建立HTTP连接的代码
私有InputStream OpenHttpConnection(字符串urlString)引发IOException
{
InputStream in=null;
int响应=-1;
URL=newurl(urlString);//我们获取一个类为URL的对象
URLConnection conn=url.openConnection();//创建连接对象并打开连接
如果(!(HttpURLConnection的conn instanceof))抛出新的IOException(“不是Http连接”);
尝试
{
HttpURLConnection httpConn=(HttpURLConnection)conn;//为httpConn对象分配了conn的值。执行类型转换是为了避免冲突。
httpConn.setAllowUserInteraction(假);
httpConn.setInstanceFollowRedirects(真);
httpConn.setRequestMethod(“GET”);
httpConn.connect();
response=httpConn.getResponseCode();
if(response==HttpURLConnection.HTTP\u OK)
in=httpConn.getInputStream();
}
捕获(例外情况除外)
{
抛出新IOException(“连接错误”);
}
返回;
}   
//------------------------------------------OpenHttpConnection方法已完成----------------------------------------------------------//
//----------------------------------------------------------------------------------------------------------------------------------------------------------------//
//-------------------------------方法下载图像--------------------------------------------------------------------------------------//
私有位图下载图像(字符串URL)
{
位图=空;
InputStream in=null;
尝试
{
in=OpenHttpConnection(URL);
位图=BitmapFactory.decodeStream(in);
in.close();
}
捕获(IOE1异常)
{
Toast.makeText(this,e1.getLocalizedMessage(),Toast.LENGTH_LONG.show();
//Toast向用户显示短消息。这是指当前对象。
e1.printStackTrace();
}
返回位图;
}  
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
位图位图=下载图像(“http://i.zdnet.com/blogs/3-29-androids.jpg");
img=(ImageView)findViewById(R.id.img);
设置图像位图(位图);
}
}

查找这些技术

ApacheTomcat-Java服务器页面(服务器处理) MySQL(数据存储)


就这样。还要确保在单独的线程中执行请求,如异步任务和活动。

查找这些技术

ApacheTomcat-Java服务器页面(服务器处理) MySQL(数据存储)


就这样。还要确保在一个单独的线程中执行请求,比如活动中的异步任务。

如果您了解java,我建议将servlet作为托管在服务器上的服务,从mysql或任何数据库读取数据,并将其构造为json。在android应用程序中,使用内置httpclient将http发送到远程servlet并解析json响应。所以Servlets、Httpclient和Json涵盖了手机应用程序的大部分内容。

如果您了解java,我建议将servlet作为托管在服务器上的服务,从mysql或任何数据库读取数据,并将其构造为Json。在android应用程序中,使用内置httpclient将http发送到远程servlet并解析json响应。所以Servlets、Httpclient和Json涵盖了手机应用程序的大部分内容。

更新(基于评论):当我们谈论客户端时,我确认我的回答。如果站点不是您的,那么首先需要检查它如何/是否允许通过API进行某种通信,以及使用何种格式(XML和JSON是最常用的)。有了这些信息,这应该很容易。看看使用谷歌地图或Twitter的Android示例,您应该会发现一些

好吧,那要看你做什么了