❶ android开发 为什么要有RESTful开发经验
不知道你是不是想说没有工作经验,想找个有工作经验和你交流下。 我现在工作4个月,java开发。
❷ android有几种请求方式okhttp restful
这个问题有点问题,这并不是三种方式,okhttp只是对网络访问的一个更高层的封装,httpURLConnection和httpClient是具体两种实现访问的方式。
❸ 怎样为网站的Android客户端开发RESTful的API
参考下面方法
使用spring mvc 就可以了
@Controller
public class AppUpdate {
@ResponseBody
@RequestMapping("/update")
public Message<AppUpdateModel> update(@RequestBody BaseModel mod, HttpServletRequest request) {
❹ 如何调用restful api
System.Net命名空间包含了 HttpWebRequest 和 HttpWebResponse 类的获取从Web服务器和基于HTTP的Web服务的数据。通常你还需要添加一个引用System.Web,这将给你访问HttpUtility类,它提供的方法对HTML和URL编码和解码的文本字符串。 虽然一些网络服务也可以返回其他格式的数据,如JSON和序列化的php,但最容易利用的还是XML,因为在.NET Framework广泛支持这种格式的读取和操作。
二、获取数据
1、以Get方式获取
using System;
using System.IO;
using System.Net;
using System.Text;
// Create the web request
HttpWebRequest request = WebRequest.Create("http://developer.yahoo.com/") as HttpWebRequest;
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
// Console application output
Console.WriteLine(reader.ReadToEnd());
}
2、以Post方式获取
using System.Web;
Uri address = new Uri("http://api.search.yahoo.com/ContentAnalysisService/V1/termExtraction");
// Create the web request
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
// Set type to POST
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// Create the data we want to send
string appId = "YahooDemo";
string context = "Italian sculptors and painters of the renaissance"
+ "favored the Virgin Mary for inspiration";
string query = "madonna";
StringBuilder data = new StringBuilder();
data.Append("appid=" + HttpUtility.UrlEncode(appId));
data.Append("&context=" + HttpUtility.UrlEncode(context));
data.Append("&query=" + HttpUtility.UrlEncode(query));
// Create a byte array of the data we want to send
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());
// Set the content length in the request headers
request.ContentLength = byteData.Length;
// Write data
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(byteData, 0, byteData.Length);
}
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
// Console application output
Console.WriteLine(reader.ReadToEnd());
}
三、HTTP 验证请求
有些朋友在调用Restful Api时,可能要提供用户名和密码进行Http身份验证,这里我们可以通过为请求增加一个 NetworkCredentials 实例来完成.
// Create the web request
HttpWebRequest request
= WebRequest.Create("https://api.del.icio.us/v1/posts/recent") as HttpWebRequest;
// Add authentication to request
request.Credentials = new NetworkCredential("username", "password");
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
// Console application output
Console.WriteLine(reader.ReadToEnd());
}
❺ 如何 调用 restful web services
RESTful WebService是比基于SOAP消息的WebService简单的多的一种轻量级Web服务,RESTful WebService是没有状态的,发布和调用都非常的轻松容易。
下面写一个最简单的Hello World例子,以便对RESTful WebService有个感性认识。因为非常专业理论化的描述RESTful WebService是一件理解起来很痛苦的事情。看看例子就知道个大概了,再看理论就容易理解多了。
/**
* RESTful WebService入门
* @author leimin 2009-11-18 16:42:43
*/
packageexample;
importcom.sun.jersey.api.container.httpserver.HttpServerFactory;
importcom.sun.net.httpserver.HttpServer;
importjavax.ws.rs.GET;
importjavax.ws.rs.Path;
importjavax.ws.rs.Proces;
importjava.io.IOException;
//指定URI
@Path("/helloworld")
publicclassHelloWorld {
//处理HTTP的GET请求
@GET
// 处理请求反馈的内容格式为"text/plain"
@Proces("text/plain")
publicString getClichedMessage() {
return"Hello World!";
}
publicstaticvoidmain(String[] args)throwsIOException {
//创建RESTful WebService服务
HttpServer server = HttpServerFactory.create("http://192.168.14.117:9999/");
//启动服务,这会导致新开一个线程
server.start();
//输出服务的一些提示信息到控制台
System.out.println("RESTful WebService服务已经启动");
System.out.println("服务访问地址: http://192.168.14.117:9999/helloworld");
}
}
运行这个类,控制台输入出:
2009-11-18 17:25:37 com.sun.jersey.api.core.ClasspathResourceConfig init
信息: Scanningforroot resource and provider classes in the paths:
D:jdk16jrelibalt-rt.jar
D:jdk16jrelibcharsets.jar
D:jdk16jrelibdeploy.jar
D:jdk16jrelibjavaws.jar
D:jdk16jrelibjce.jar
D:jdk16jrelibjsse.jar
D:jdk16jrelibmanagement-agent.jar
D:jdk16jrelibplugin.jar
D:jdk16jrelib
esources.jar
D:jdk16jrelib
t.jar
D:jdk16jrelibextdnsns.jar
D:jdk16jrelibextlocaledata.jar
D:jdk16jrelibextsunjce_provider.jar
D:jdk16jrelibextsunmscapi.jar
D:jdk16jrelibextsunpkcs11.jar
D:
etwideo
estwsoutproction
estws
D:IDEA8libjavaee.jar
D:
etwideo
estwslibmail-1.4.jar
D:
etwideo
estwslibasm-3.1.jar
D:
etwideo
estwslibwadl2java.jar
D:
etwideo
estwslibjettison-1.0.1.jar
D:
etwideo
estwslibgrizzly-servlet-webserver-1.8.6.4.jar
D:
etwideo
estwslibwadl-core.jar
D:
etwideo
estwsliblocalizer.jar
D:
etwideo
estwslibjdom-1.0.jar
D:
etwideo
estwslibjsr311-api-1.0.jar
D:
etwideo
estwslibstax-api-1.0-2.jar
D:
etwideo
estwslibpersistence-api-1.0.2.jar
D:
etwideo
estwslibjaxb-api-2.1.jar
D:
etwideo
estwslibwadl-cmdline.jar
D:
etwideo
estwslibhttp-20070405.jar
D:
etwideo
estwslib
ome-0.9.jar
D:
etwideo
estwslibactivation-1.1.jar
D:
etwideo
estwslibjaxb-impl-2.1.10.jar
D:
etwideo
estwslibjersey-bundle-1.0.3.jar
D:
etwideo
estwslibjackson-lgpl-0.9.4.jar
D:
etwideo
estwslibFastInfoset-1.2.2.jar
D:
etwideo
estwslibjaxb-xjc.jar
D:IDEA8libidea_rt.jar
2009-11-18 17:25:46 com.sun.jersey.api.core.ClasspathResourceConfig init
信息: Root resource classes found:
classexample.HelloWorld
2009-11-18 17:25:46 com.sun.jersey.api.core.ClasspathResourceConfig init
信息: Provider classes found:
RESTful WebService服务已经启动
服务访问地址:http://192.168.14.117:9999/helloworld
可见,服务启动成功了,下来就是从浏览器中访问服务了,输入http://192.168.14.117:9999/helloworld,将发送一个HTTP GET请求,看看结果:
测试成功了!
❻ 如何通过类对象作为方法参数的RESTful服务吗
需要在对象前声明 @ApiBodyObject
@POST
@Path("/addFavor/")
void addFavor(@QueryParam("linkId") String linkId, @ApiBodyObject User user,
@QueryParam("favorTypeCode") String favorTypeCode, @QueryParam("linkTable") String linkTable);
@ApiBodyObject 相当于 SpringMVC 的 @RequestBody
参数注解的作用就是将 xml/json (具体那种看配置,cxf 是json) 转换为实体对象如 User 传递给实现方法,如下:
@Override
@Transactional(readOnly = false)
public void addFavor(String linkId, User user, String favorTypeCode, String linkTable) {
}
❼ android开发 为什么要有RESTful开发经验
RESTful 是服务端技术,他想开发安卓的兼开发服务端
❽ 怎样为网站的Android客户端开发RESTful的API
简单来说就是将网站的功能移植到API方式,主要就是数据格式的变化 html to json or xml
看看微博,豆瓣的 API 文档,看看他们和自身网站的对应关系。
PS: 抓包分析下知乎的客户端也是可以的 ;)
❾ 如何做一款自己的Android App
总计设计:
Android客户端采用 Tab + 侧边栏的整体布局
服务器采用新浪SAE部署, 采用PHP + MySQL 开发 ,数据交互采用 java通过http调用php restful接口
一款android App需要考虑的问题:
UI设计: UI是大众的弱点,如果想开发一款不错的应用,简单的ps要会
有无网络数据处是读缓存、还是从网络读取
数据缓存:服务器缓存和本地数据缓存
数据同步: 服务器和本地数据同步、UI界面数据同步
加载loading、加载失败、失败重试
消息通知: 客户端主动拉取或者实现服务器推送
登陆与分享:自由账号与第三方账号打通、分享定制
首次加载速度: 发布app前,把一部分数据打包在app中
统计数据:用于统计用户习惯、后续功能完善和数据调整的依据
集成第三方登陆:QQ登陆和新浪微博登陆标配
安全性:获取请求的安全性、用户输入安全性、评论防刷问题等
兼容性问题
架构的可用性,便于后续项目开发
常用系统组件和开源组件:
1、Fragment
需要解决Fragment隐藏与显示重叠问题
需要解决由后台切回前台Fragment被销毁,导致显示非常慢
2、侧边栏
slidingmenu 或者 NavigationDraw
3、图片加载: imageLoader
兼容性问题,部分远程图片无法加载显示
4、HTTP异步加载android-async-http
5、上拉下拉刷新: pullrefresh
需要解决兼容性问题,mx3滚动有问题,会自动拉出很大一块空白
上拉和下拉文案共用,需要解决上拉和下拉文案的不同
6、tab控件 PagerSlidingTabStrip
需要Tab解决样式定制问题
需要解决tab缓存和惰性加载
7、SAXParser 解析 rss
遇到引入第三方解析jar包时, 运行时找不类, 但类其实是有的
遇到了解析CSDN博客文章时无法解析标题到标题的bug
8、集成QQ登陆和腾讯微博登陆
登陆无法拿到QQ和账号,需要自己解决第三方账号与自由账号打通问题
QQ 图像无法用imageLoader加载
9、分享组件可以调用系统的,也可以使用第三方组件ShareSDK
10、消息推送
自己实现推送:主动拉取 或者 socket通信
可以集成第三方消息推送、比如网络云推送、云之讯等
11、UI设计
iconpng.com iconfinder.com easyicon.com
使用photoshop ps自己需要的图片
付费让UI设计人员帮你设计
广告平台:
豌豆荚、广点通、 有米广告、 点乐积分墙、 多盟广告等等
应用市场:
应用宝、豌豆荚、网络、91、安智、安卓、360、华为(暂不允许个人提交的应用)、小米、魅族等