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
來一波自製插件也是極好的。