android互联网,android的互联网开发 上

一、java socket编程的介绍http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html

二、URL、UrlConnection网络编程介绍

三、HTTP网络编程介绍

http协议-简介http协议-C#获取网页源代码http协议-多线程文件传输

四、 Web Service网络编程介绍

五、 android WebView网络编程介绍

实例代码-----------------------------------------------

服务器端模拟

MyServer.java

package com.amaker.socket;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

/**

*

* Socket 服务器,向客户端写Hello Android!

*/

public class MyServer {

public static void main(String[] args) {

try {

ServerSocketserver=newServerSocket(8888);

while(true){

Socketclient=server.accept();

OutputStreamout=client.getOutputStream();

Stringmsg="Hello Android!";

out.write(msg.getBytes());

client.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

LoginServlet.java

package com.amaker.http;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* 响应登录Servlet

*/

public class LoginServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

Stringusername=request.getParameter("username");

Stringpassword=request.getParameter("password");

System.out.println(username+":"+password);

response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

PrintWriterout=response.getWriter();

Stringmsg=null;

if(username!=null&&username.equals("admin")&&password!=null&&password.equals("1")){

msg="登录成功!";

}else{

msg="登录失败!";

}

out.print(msg);

out.flush();

out.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request,response);

}

}

web.xml

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">

LoginServlet

com.amaker.http.LoginServlet

LoginServlet

/servlet/LoginServlet

android客户端

MainActivity.java

package com.amaker.ch13;

import android.app.ListActivity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import com.amaker.ch13.http.LoginActivity;

import com.amaker.ch13.socket.TestSocketActivity;

import com.amaker.ch13.url.TestURLActivity;

import com.amaker.ch13.webservice.TestWebServiceActivity;

import com.amaker.ch13.webservice.WeatherActivity;

import com.amaker.ch13.webview.TestWebViewActivity;

public class MainActivity extends ListActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 菜单项数组

String[]items= {"测试 Socket","测试URL、UrlConnection","测试 HTTP","测试 Web Service","天气预报","Test WebView"};

// 将菜单项数组设置为ListView的列表项展示

setListAdapter(new ArrayAdapter(this,

android.R.layout.simple_list_item_1, items));

getListView().setTextFilterEnabled(true);

}

// 响应菜单项的单击事件

protected void onListItemClick(ListView l, View v, int position, long id) {

Intentintent=null;

switch (position) {

case 0:

intent=newIntent(MainActivity.this,TestSocketActivity.class);

startActivity(intent);

break;

case 1:

intent=newIntent(MainActivity.this,TestURLActivity.class);

startActivity(intent);

break;

case 2:

intent=newIntent(MainActivity.this,LoginActivity.class);

startActivity(intent);

break;

case 3:

intent=newIntent(MainActivity.this,TestWebServiceActivity.class);

startActivity(intent);

break;

case 4:

intent=newIntent(MainActivity.this,WeatherActivity.class);

startActivity(intent);

break;

case 5:

intent=newIntent(MainActivity.this,TestWebViewActivity.class);

startActivity(intent);

break;

}

}

}

AndroidManifest.xml

xmlversion="1.0"encoding="utf-8"?>

package="com.amaker.ch13"

android:versionCode="1"

android:versionName="1.0">

android:label="@string/app_name">

intent-filter>

activity>

application>

uses-permission>

uses-permission>

manifest>

一、socket编程

TestSocketActivity.java

代码

package com.amaker.ch13.socket;

import java.io.IOException;

import java.io.InputStream;

import java.net.Socket;

import java.net.UnknownHostException;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

import com.amaker.ch13.R;

/**

*

* Android Socket 客户端接收服务器信息

*/

public class TestSocketActivity extends Activity {

private TextView myTextView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.socket);

myTextView= (TextView)findViewById(R.id.msgTextView01);

try {

Socketsocket=newSocket("192.168.1.101",8888);

InputStreamin=socket.getInputStream();

byte[]buffer=newbyte[in.available()];

in.read(buffer);

Stringmsg=newString(buffer);

myTextView.setText(msg);

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

socket.xml

代码

xmlversion="1.0"encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:text="等待接收服务器信息..."

android:id="@+id/msgTextView01"

android:layout_width="wrap_content"

android:layout_height="wrap_content">TextView>

LinearLayout>

二、URL、UrlConnection编程

TestURLActivity.java

代码

package com.amaker.ch13.url;

import java.io.InputStream;

import java.net.URL;

import java.net.URLConnection;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.widget.ImageView;

import com.amaker.ch13.R;

/**

* 通过URL进行网络连接

*/

public class TestURLActivity extends Activity {

private ImageView p_w_picpathView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.test_url);

p_w_picpathView= (ImageView)findViewById(R.id.ImageView01);

StringurlStr="http://192.168.1.101:8080/Chapter_13_Networking_server/upload/zs.jpg";

try {

URLurl=newURL(urlStr);

// 1. 直接使用URL获得输入流

//InputStreamin=url.openStream();

// 2. 获得URLconnection

URLConnectionconn=url.openConnection();

InputStreamin=conn.getInputStream();

// 3. 如果是HTTP协议可以使用HttpURLConnection

//HttpURLConnectionhttpConn= (HttpsURLConnection)conn;

//in=httpConn.getInputStream();

Bitmapbm=BitmapFactory.decodeStream(in);

p_w_picpathView.setImageBitmap(bm);

} catch (Exception e) {

e.printStackTrace();

}

}

}

test_url.xml

代码

xmlversion="1.0"encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/ImageView01"

android:layout_width="wrap_content"

android:layout_height="wrap_content">ImageView>

LinearLayout>

三、 HTTP编程

LoginActivity.java

代码

package com.amaker.ch13.http;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.List;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.protocol.HTTP;

import org.apache.http.util.EntityUtils;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import com.amaker.ch13.R;

public class LoginActivity extends Activity {

/*

* 声明使用到的Button和EditText视图组件

*/

private Button cancelBtn,loginBtn;

private EditText userEditText,pwdEditText;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.http1);

/*

* 实例化视图组件

*/

cancelBtn= (Button)findViewById(R.id.cancelButton);

loginBtn= (Button)findViewById(R.id.loginButton);

userEditText= (EditText)findViewById(R.id.userEditText);

pwdEditText= (EditText)findViewById(R.id.pwdEditText);

/*

* 设置登录监听器

*/

loginBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Stringusername=userEditText.getText().toString();

Stringpwd=pwdEditText.getText().toString();

login(username,pwd);

}

});

/*

* 设置取消监听器

*/

cancelBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

finish();

}

});

}

/*

* 定义一个显示提示信息的对话框

*/

private void showDialog(String msg){

AlertDialog.Builderbuilder=newAlertDialog.Builder(this);

builder.setMessage(msg)

.setCancelable(false)

.setPositiveButton("确定", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

}

});

AlertDialogalert=builder.create();

alert.show();

}

/*

* 通过用户名称和密码进行查询,发送Post请求,获得响应结果。

*/

private void login(String username,String password){

// 1. 使用 HttpURLConnection 实现

/*StringurlStr="http://192.168.1.101:8080/Chapter_13_Networking_server/servlet/LoginServlet?";

StringqueryString="username="+username+"&password="+password;

urlStr+=queryString;

try {

URLurl=newURL(urlStr);

HttpURLConnectionconn= (HttpURLConnection)url.openConnection();

if(conn.getResponseCode()==HttpURLConnection.HTTP_OK){

InputStreamin=conn.getInputStream();

byte[]b=newbyte[in.available()];

in.read(b);

Stringmsg=newString(b);

showDialog(msg);

in.close();

}

conn.disconnect();

} catch (Exception e) {

showDialog(e.getMessage());

}*/

// 2. 使用 Apache HTTP 客户端实现

StringurlStr="http://192.168.1.101:8080/Chapter_13_Networking_server/servlet/LoginServlet";

HttpPostrequest=newHttpPost(urlStr);

// 如果传递参数个数比较多的话,我们可以对传递的参数进行封装

Listparams=newArrayList();

params.add(new BasicNameValuePair("username", username));

params.add(new BasicNameValuePair("password", password));

try {

request.setEntity( new UrlEncodedFormEntity(params,HTTP.UTF_8));

HttpResponseresponse=newDefaultHttpClient().execute(request);

if(response.getStatusLine().getStatusCode()==200){

Stringmsg=EntityUtils.toString(response.getEntity());

showDialog(msg);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值