Android通过WebService实现图片的上传和下载(一)

21 篇文章 7 订阅

这篇文章将讲解Android如果通过访问WebService接口实现图片的上传和下载,当然这不但需要大家懂得Android还要懂得WebService技术,安卓属于客户端,而webservice则属于服务端,所以就要求大家既要会开发APP又要会写服务器,这篇文章所用的WebService是通过Xfire实现的,不懂的同学可以了解一下javaWeb技术和Xfire。当然这篇文章主要是针对既要开发客户端又要开发服务端的童鞋的,所以javaWeb相关技术就不必多讲了,不是文章重点。首先,我们先来看图片下载的实现,这个相信做过安卓的都知道怎么实现,如果觉得自己已经闭着眼睛就知道代码怎么写的童鞋可以跳过此篇文章了,先看一下从网络获取图片工具类:

/**
 * @author baiyuliang
 */
public class ImageService {

	// 获取网络图片的数据
	public static byte[] getImg(String picpath) throws Exception {
		URL url = new URL(picpath);
		// 基于http协议的连接对象
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setConnectTimeout(30000);// 30秒;
		conn.setReadTimeout(30000); // 30秒;
		conn.setInstanceFollowRedirects(true);
		conn.setRequestMethod("GET");// 获取方法:get

		if (conn.getResponseCode() == 200) {// 当返回代码为200时表示获取数据成功
			InputStream is = conn.getInputStream();
			ByteArrayOutputStream os = new ByteArrayOutputStream();
			byte[] buffer = new byte[1024];
			int length = 0;
			while ((length = is.read(buffer)) > -1) {
				os.write(buffer, 0, length);
			}
			os.close();
			return os.toByteArray();
		}

		return null;
	}

}

这个方法里,只需要传入图片的路径,就可以得到最终转换后的图片的字节数组,然后通过BitmapFactory.decodeByteArray图片工厂将字节数组转换成位图既可以显示出来了,而图片的路径,我们不管从哪里获得,只要有正确的路径,就能得到图片,或许大家会有疑问,这个webservice扯上什么关系,呵呵,因为若我们用webservice做服务端,那么图片的路径就肯定是通过webservice传过来的,客户端发送请求后,服务端相应请求,一般的做法就是将要返回的数据转换我IJSON格式返回给手机客户端,客户端接收数据后再解析JSON字符串,而图片路径获取就包含在这个字符串中,而如何解析,大家应该很熟悉了吧。那么手机客户端如何与webservice进行通信,如何发送数据,又如何接收数据,我将在下一篇文章中继续讲解。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要通过Android连接SQL Server并使用WebService,您可以按照以下步骤进行操作: 1. 首先,确保您已经创建了一个用于SQL Server数据库的服务器以及相应的表。 2. 下载并安装适用于Android开发的IDE(如Android Studio)并创建新的Android项目。 3. 在Android项目的build.gradle文件中,添加Java连接SQL Server所需的依赖项。示例代码如下: ```java dependencies { implementation 'net.sourceforge.jtds:jtds:1.3.1' } ``` 4. 在Android的MainActivity.java文件中,编写以下代码来创建使用WebService连接SQL Server的逻辑: ```java import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private static final String ip = "your_server_ip_address"; private static final String port = "your_sql_server_port"; private static final String database = "your_database_name"; private static final String user = "your_username"; private static final String password = "your_password"; private Button connectButton; private TextView resultTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); connectButton = findViewById(R.id.connectButton); resultTextView = findViewById(R.id.resultTextView); connectButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new ConnectSQLServer().execute(); } }); } private class ConnectSQLServer extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { String result = ""; try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); String url = "jdbc:jtds:sqlserver://" + ip + ":" + port + "/" + database; Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("your_sql_query_here"); while (resultSet.next()) { result += resultSet.getString("your_column_name"); } resultSet.close(); statement.close(); connection.close(); } catch (Exception e) { Log.e(TAG, "Error: " + e.getMessage()); result = "Error: " + e.getMessage(); } return result; } @Override protected void onPostExecute(String result) { resultTextView.setText(result); } } } ``` 通过上述代码,当用户点击Connect按钮时,将会创建一个异步任务来连接SQL Server并执行查询。请确保将您的服务器IP地址、端口、数据库名称、用户名和密码替换为实际值。 5. 在Android的布局文件(activity_main.xml)中,创建一个Button和一个TextView用于显示查询结果。 ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingTop="16dp" android:paddingRight="16dp" android:paddingBottom="16dp"> <Button android:id="@+id/connectButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Connect" android:layout_centerInParent="true"/> <TextView android:id="@+id/resultTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/connectButton" android:textSize="18sp"/> </RelativeLayout> ``` 6. 运行Android应用程序,并点击Connect按钮以连接SQL Server并显示查询结果。 这就是使用Android连接SQL Server并使用WebService的详细教程。请注意,这只是一个基本示例,您可能需要根据您的特定需求进行一些调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白玉梁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值