okhttp搭建服务器端
1. win7如何搭建邮件服务器
win
7
是不能搭建服务器的
它是客户端的操作系统
只有服务器端的操作系统才行
比如:win
server
2003
或2008
不过
你可以在win
7
上安装虚拟机
再在虚拟机上安装服务器端的操作系统
这样你就在虚拟机里的操作系统上安装邮件服务器
并且虚拟机是可以和你的物理机通信的
2. 自己网站搭建服务器需要多大的宽带流程怎么走
自己网站搭建服务器带宽一般1M起步。如果你网站流量较大,可以从3M、5M起步。
首次建站并不麻烦啊。建网站的话,需要域名、服务器、程序、主题,这些一个都不能少。
虚拟主机、服务器、主机、空间都是用来放网站程序的。后面三个其实是同一个东西,名字不同而已。
建议用云服务器多一些,现在成本不高,1核2g内存1M带宽才一百元左右,能运行每天几千PV访问量的小型网站了,够用的。
从预算和你的需求来看,国内选择那几个比较大的商家合适,至于名字和具体配置选择也是一门学问,老魏会帮助你提供参考意见。
3. android平台的app 手机客户端和后台服务器怎么进行数据交互的
首先不要管安卓端还是苹果端,现在一般都是响应式的app,你放到安卓或者苹果或者pc或者平板都是没有问题的。一般采用的是http接口通讯,或者socket连接。具体你要去查资料找Demo了。而且现在主流是采用html5开发或者混合开发了。所以最好是服务器提供appAPI接口,通过http访问服务器,获取数据,数据一般是json,或者xml,拿到后解析数据就可以了,然后再用UI框架或者其他框架或者自定义的UI封装下格式很漂亮了,至于cookie和session等,看你的习惯,网络验证和签名那些也自己看习惯,如果涉及到大数据,还需要引入第三方框架的,直接引入就可以了,不过推荐自己写,防止侵权。都是很通用的。
4. webservice是基于soap协议的,在android端可以用okhttp建立连接吗
调用几主要:
1.创建HttpTransportSE传输象:HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); SERVICE_URLwebservice提供服务url
2.使用SOAP1.1协议创建Envelop象:SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 设置SOAP协议版本号根据服务端WebService版本号设置
3.实例化SoapObject象:SoapObject soapObject = new SoapObject(SERVICE_NAMESPACE, methodName); 第参数表示WebService命名空间WSDL文档找WebService命名空间第二参数表示要调用WebService名
4.设置调用参数值没参数省略:例soapObject.addProperty("theCityCode", cityName);
5.记设置bodyout属性 envelope.bodyOut = soapObject;
6.调用webservice:ht.call(SERVICE_NAMESPACE+methodName, envelope);
7.获取服务器响应返SOAP消息:
SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject detail = (SoapObject) result.getProperty(methodName+"Result");
5. okhttp框架使用手机网络为什么不能访问服务器
POST TO A SERVER
Posting a String:
public static final MediaType jsonReq
= MediaType.parse(application/json; charset=utf-8);
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(jsonReq, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
Posting Streaming:
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse(text/x-markdown; charset=utf-8);
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
RequestBody requestBody = new RequestBody() {
@Override public MediaType contentType() {
return MEDIA_TYPE_MARKDOWN;
}
@Override public void writeTo(BufferedSink sink) throws IOException {
sink.writeUtf8(Numbers
);
sink.writeUtf8(-------
);
for (int i = 2; i <= 997; i++) {
sink.writeUtf8(String.format( * %s = %s
, i, factor(i)));
}
}
private String factor(int n) {
for (int i = 2; i < n; i++) {
int x = n / i;
if (x * i == n) return factor(x) + × + i;
}
return Integer.toString(n);
}
};
Request request = new Request.Builder()
.url(https://api.github.com/markdown/raw)
.post(requestBody)
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException(Unexpected code + response);
System.out.println(response.body().string());
}
Posting a File:
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse(text/x-markdown; charset=utf-8);
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
File file = new File(README.md);
Request request = new Request.Builder()
.url(https://api.github.com/markdown/raw)
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN, file))
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException(Unexpected code + response);
System.out.println(response.body().string());
}
Posting from parameters:
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
RequestBody formBody = new FormEncodingBuilder()
.add(search, Jurassic Park)
.build();
Request request = new Request.Builder()
.url(https://en.wikipedia.org/w/index.php)
.post(formBody)
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException(Unexpected code + response);
System.out.println(response.body().string());
}
Posting a multipart request:
private static final String IMGUR_CLIENT_ID = ...;
private static final MediaType MEDIA_TYPE_PNG = MediaType.parse(image/png);
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
// Use the imgur image upload API as documented at https://api.imgur.com/endpoints/image
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(
Headers.of(Content-Disposition, form-data; name= itle),
RequestBody.create(null, Square Logo))
.addPart(
Headers.of(Content-Disposition, form-data; name=image),
RequestBody.create(MEDIA_TYPE_PNG, new File(website/static/logo-square.png)))
.build();
Request request = new Request.Builder()
.header(Authorization, Client-ID + IMGUR_CLIENT_ID)
.url(https://api.imgur.com/3/image)
.post(requestBody)
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException(Unexpected code + response);
System.out.println(response.body().string());
}
Posing Json with Gson
private final OkHttpClient client = new OkHttpClient();
private final Gson gson = new Gson();
public void run() throws Exception {
Request request = new Request.Builder()
.url(https://api.github.com/gists/c2a7c39532239ff261be)
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException(Unexpected code + response);
Gist gist = gson.fromJson(response.body().charStream(), Gist.class);
for (Map.Entry entry : gist.files.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue().content);
}
}
static class Gist {
Map files;
}
static class GistFile {
String content;
}
Response Caching:
为了缓存响应,你需要一个你可以读写的缓存目录,和缓存大小的限制。这个缓存目录应该是私有的,不信任的程序应不能读取缓存内容。
一个缓存目录同时拥有多个缓存访问是错误的。大多数程序只需要调用一次 new OkHttp() ,在第一次调用时配置好缓存,然后其他地方只需要调用这个实例就可以了。否则两个缓存示例互相干扰,破坏响应缓存,而且有可能会导致程序崩溃。
响应缓存使用HTTP头作为配置。你可以在请求头中添加 Cache-Control: max-stale=3600 ,OkHttp缓存会支持。你的服务通过响应头确定响应缓存多长时间,例如使用 Cache-Control: max-age=9600 。
6. 怎么用node搭建服务器
1.Node服务器端监听端口及开启端口处理事件需引入 http 模块。在Node中 引入其他模块文件方法为: require(模块名称)。
2.Node中服务器简单处理还需引入的模块有 fs(文件操作模块)、url(路径处理模块)等。
代码
service.js
//引入http模块
varhttp=require('http');
//引入fs模块
varfs=require('fs');
//引入url模块
varurl=require('url');
//开启本地http服务,监听相应端口号
http.createServer(function(req,res){
//获取requset信息中的host地址
varhostname=req.headers.host;
//获取pathname
varpathname=url.parse(req.url).pathname;
//判断是否为域名地址(简单路由)
if(pathname==='/'){
readFileAndResponse('/index.html',res);
}
}).listen(端口);
//读取文件并返回response
functionreadFileAndResponse(pathname,response){
//判断文件是否存在
fs.readFile(pathname.substr(1),'',function(err,data){
//文件不存在或读取错误返回404,并打印pagenotfound
if(err){
response.writeHead(404);
response.end('pagenotfound');
}
else{
//读取成功返回相应页面信息
response.end(data);
}
});
}
复制代码
1.打开终端,进入service.js所在位置要是同一目录。
注:不在service同目录执行也会成功,但根据页面的配置及目录分布不同,容易出现css及js样式无法显示。
2.运行 node service.js 。
3.在浏览器中输入:127.0.0.1:端口号 ok,页面成功指向inde.html 。
web服务器中:网址/公网IP:端口号,就可以被外网访问。
7. 如何搭建websocket服务器
在服务器的选择上很广,基本上,主流语言都有WebSocket的服务器端实现,而我们作为前端开发工程师,当然要选择现在比较火热的NodeJS作为我们的服务器端环境了。
NodeJS本身并没有原生的WebSocket支持,但是有第三方的实现(大家要是有兴趣的话,完全可以参考WebSocket协议来做自己的实现),我们选择了“ws”作为我们的服务器端实现。
由于本文的重点是讲解WebSocket,所以,对于NodeJS不做过多的介绍,不太熟悉的朋友可以去参考NodeJS入门指南(http://www.nodebeginner.org/index-zh-cn.html)。
安装好NodeJS之后,我们需要安装“ws”,也就是我们的WebSocket实现,安装方法很简单,在终端或者命令行中输入:
npm install ws
,等待安装完成就可以了。
接下来,我们需要启动我们的WebSocket服务。首先,我们需要构建自己的HTTP服务器,在NodeJS中构建一个简单的HTTP服务器很简单,so easy。代码如下:
var app = http.createServer(onRequest ).listen( 8888 );
onRequest()作为回调函数,它的作用是处理请求,然后做出响应,实际上就是根据接收的URL,在服务器上查找相应的资源,最终返回给浏览器。
在构建了HTTP服务器后,我们需要启动WebSocket服务,代码如下:
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer( { server : app } );
从代码中可以看出,在初始化WebSocket服务时,把我们刚才构建好的HTTP实例传递进去就好。到这里,我们的服务端代码差不多也就编写完成了。
8. 怎样在本地搭建代码管理服务器
搭建SVN服务器端: 1. 解压缩svn到一个目录, 例如c:\svn 2. 解压缩svnservice的压缩包, 将svnservice.exe放入c:\svn\bin 3. 安装TortoiseSVN, 安装完毕时会提示重新启动计算机, 重启完毕后安装简体中文语言包, 然后在随便一个目录右击, 就会发现多出了一些SVN相关菜单, 选择其中的TortoiseSVN, 再选择子菜单"Settings", 设置Language为"中文(简体)" 4. 打开"我的电脑", 建立一个存放svn信息的目录, 例如c:\svnhome, 然后返回在c盘, 右击这个svnhome目录, 在出现的菜单中选择TortoiseSVN, 再选择子菜单"在此创建文件库", 选择fsfs方式即可 (注: 这里选择创建文件库实际上就相当于让TortoiseSVN代替你进行了svnadmin create c:\svnhome的操作) 5. 在dos控制台状态下cd c:\svn\bin 然后svnservice -install -d -r c:\svnhome 再net start svnservice来将其作为服务运行, 建议你再到控制面板-管理工具-服务中找到SVNService, 右击选择"属性", 再将其启动类型设置为"自动" 6. 打开c:\svnhome, 你会发现已经多了一些目录和文件, 打开conf子目录, 打开svnserve.conf文件, 这里行前凡是有#的都等于是被注释忽略了, 你可以把#去掉让那一行生效, 或者自己新添加行. 里面的英文注释已经详细说明了各种设置的含义, 最后你设置[general]小节中行前没有#号的内容为: anon-access = none auth-access = write password-db = passwd 含义是: 未验证用户无任何权限 (如果把none修改为read就是给予读权限) 已验证用户给予写权限 (当然也能读) 密码数据存放到passwd文件中 然后打开同目录的passwd文件来设置帐户: 同样, 设置[users]小节中行前没有#号的内容, 例如: snowman=abc123 含义是: 用户snowman的密码为abc123 6. 打开"我的电脑", 在你需要进行版本控制的目录上右击, 选择TortoiseSVN, 再选择子菜单"导入...", 设置"文件库url"为svn://localhost 点确定后就会提示文件正在导入. (注: 这里是svn文件库与svn服务是同一台计算机的情况, 所以可用localhost, 其它机器如果要访问svn服务, 应该用svn://svn服务器的IP地址, 例如svn://10.0.0.52) 至此, SVN服务器配置完成 客户端配置: 1. 没安装TortoiseSVN的计算机先安装它并重启计算机. (注: 具体步骤参照前面搭建服务器端的第3步) 2. 创建一个准备用来存放版本控制工程的目录, 例如d:\project, 然后在"我的电脑"中右击这个目录, 选择"SVN取出...", 设置"文件库url"为svn://svn服务器的IP地址, 接下来会问你用户名和帐号, 你就填写前面搭建服务器端所设置的用户snowman密码abc123 (文件库url可参照前面搭建服务器端第6步的注解) 点确定后就会提示文件正在取出到d:\project 至此, SVN客户端配置完成, 你会看到d:\project及其下面的文件都被标记了绿色对勾 客户端的简单日常使用: 1. 要取得工程的当前的最新版本, 右击d:\project, 选择"SVN更新" 2. 你更改工程后, 要将你的修改更新到SVN, 右击d:\project, 选择"SVN提交" (谨慎的话请先更新到SVN最新版本后再提交)
9. 如何用云服务器搭建一台Minecraft PE服务器
minecraft
pe
没有成熟的
java
服务器端,大概之前都是
php
写的
pocketmine
为主流,不过很遗憾
pocketmine
跟
bukkit
一个毛样,原作者弃坑又不肯让他人来填坑,目前国人基于其开发的
genisys
或者综合了包括
genisys
在内多个
fork
优化的
imagicalmine
均可以考虑。开服的方法就很简单了,装个
php7
外露个端口启动服务器就行。
不过由于
minecraft
pe
并没有官方的服务器端,所以目前这些第三方的服务器端都是
cleanroom
实现。比方说
minecraft
里放个方块,喔,一个方块放下来了,这很好。但是作为一个服务器端程序,你总得侦测这个方块是啥,谁放了这个方块,放到哪个位置,后续有什么逻辑处理,写入到地图文件里等等。像电脑版这样的话,因为有官方的服务器端可以作为基础,所以像
spigot
这样的服务器端就是将原版反编译了然后加入自己的代码。手机版则没有,反编译掉
minecraft
pe
只能得到个
c++
库文件,所以一切代码都得自己想,一个方块放下去到底会发生什么事情只能靠猜。或者亲身玩
pe
去体验。总之简单来说,这些服务器端都是不完善的,比起你和基友玩本地
wi-fi
游戏要少上很多特性,前不久这些服务器端连生物
ai
都没有呢,现在也是刚刚起步。不过没事,装几个插件玩玩,或者自学
php
来一波自制插件也是极好的。