我正在尝试在平台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);
}
}
答案 0 :(得分:2)
更新(根据评论):当我们谈论客户方时,我确认了我的答案。如果该站点不是您的,那么首先要检查它是如何/是否允许通过API进行某种通信,以及采用何种格式(XML和JSON是最常用的)。有了这些信息,它应该很容易。使用Google Map或Twitter查看Android示例,您应该找到一些。
嗯,这取决于你究竟是什么意思:你是否要求客户端(应用程序)所需的技能 - 在服务器已经构建,或将由其他人,或所需的技能的想法对于服务器?
在前一种情况下,我建议与REST API和JSON进行通信。看看apache HTTPGet,HTTPClient和HTTPResponse类以及org.json(所有这些都包含在Android中)。如果您想使用它们进行测试,请使用一些公共API(因此您不必担心服务器),例如Google Map API(在某些限制下可以轻松使用)。
在后一种情况下,我和ColWinters一起:如果你了解java,那么也可以在那里使用它,Tomcat作为服务器和基本的Servlet。你会在互联网上找到很多例子。
答案 1 :(得分:1)
查找这些技术,
Apache Tomcat - Java Server Pages(服务器处理) MySQL(存储数据)
就是这样。还要确保在单独的线程中执行请求,例如来自活动的异步任务。
答案 2 :(得分:1)
如果您了解java,我建议将servlet作为托管在服务器上的服务,该服务从mysql或anydatabase读取数据并构造为json。在你的Android应用程序中,使用buit httpclient中的http使用远程servlet并解析json响应。所以。 Servlets,Httpclient,Json涵盖了大多数,如果您的应用程序是手机应用程序的原生应用程序。