的確,這個是WebService的應(yīng)用。學校提供了規(guī)范,你根據(jù)他的規(guī)范傳入?yún)?shù)查詢就可以了。
站在用戶的角度思考問題,與客戶深入溝通,找到仙游網(wǎng)站設(shè)計與仙游網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋仙游地區(qū)。
你可以查下WebService相關(guān)的資料,以及編程技巧。我給你提供一個最原始的代碼范本,是基于JDK的。非第三方包。其它的以次類推。代碼是無參的WebService請求,有參數(shù)的,可以自己拼接下。當然現(xiàn)在有很多第三方包,都對訪問代碼做了封裝,你也可以看一下。
思路上:
1、通過服務(wù)器的WebService功能接口的訪問格式及返回值格式組裝HTTP請求。
2、得到返回值,解析出自己要的數(shù)據(jù)并加以使用。
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class WebServiceGetter {
static final String urlString = "";
public static void helloVonProject() throws Exception {
URL url = new URL(urlString);
URLConnection connection = url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection
.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
connection.setRequestProperty("SOAPAction",
"");
connection
.getOutputStream()
.write(("?xml version=\"1.0\" encoding=\"utf-8\"?\n"
+ "soap:Envelope xmlns:xsi=\"\" xmlns:xsd=\"\" xmlns:soap=\"\"\n"
+ " soap:Body\n"
+ " HelloVonProject xmlns=\"\" /\n"
+ " /soap:Body\n" + "/soap:Envelope").getBytes());
InputStream is = connection.getInputStream();
Document document = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(is);
System.out.println(document
.getElementsByTagName("HelloVonProjectResult").item(0)
.getFirstChild().getNodeValue());
}
public static void main(String[] args) throws Exception {
helloVonProject();
}
}
首先就肯定要知道ServerSocket,服務(wù)端的服務(wù)端口以及服務(wù)器的地址。
然后再用 Socket socket=new Socket(port,address);
最后,如果你需要接收數(shù)據(jù)之類的,就用socket.getInputStream(),發(fā)送數(shù)據(jù)用socket.getOutputStream()
在主函數(shù)中,完成服務(wù)器端口的偵聽和服務(wù)線程的創(chuàng)建。我們利用一個靜態(tài)字符串變量initDir 來保存服務(wù)器線程運行時所在的工作目錄。服務(wù)器的初始工作目錄是由程序運行時用戶輸入的,缺省為C盤的根目錄。
具體的代碼如下:
public class ftpServer extends Thread{
private Socket socketClient;
private int counter;
private static String initDir;
public static void main(String[] args){
if(args.length != 0) {
initDir = args[0];
}else{ initDir = "c:";}
int i = 1;
try{
System.out.println("ftp server started!");
//監(jiān)聽21號端口
ServerSocket s = new ServerSocket(21);
for(;;){
//接受客戶端請求
Socket incoming = s.accept();
//創(chuàng)建服務(wù)線程
new ftpServer(incoming,i).start();
i++;
}
}catch(Exception e){}
}
用Socket類去連接\x0d\x0aStringip="192.168.0.57";\x0d\x0aintport=7000;\x0d\x0aInputStreamin;\x0d\x0aOutputStreamout;\x0d\x0aSocketsock=null;\x0d\x0atry{\x0d\x0asock=newSocket(ip,port);\x0d\x0asock.setSoTimeout(60*1000);//設(shè)置超時\x0d\x0athis.in=sock.getInputStream();\x0d\x0athis.out=sock.getOutputStream();\x0d\x0a}catch(Exceptione){\x0d\x0athrownewException("與終端連接失敗!");\x0d\x0a}
我的方向有點和你不一樣,但是關(guān)于socket的一般是差不多的,建議你找找socket流的知識.
Socket內(nèi)含輸入,輸出流,只需獲取Socket的流對象,就可以對流進行讀寫操作了。比如,若想向Socket的輸出流寫數(shù)據(jù),只須另一方從自己的Socket的輸入流中讀取數(shù)據(jù)即可給你個例子吧,是模擬客戶端和服務(wù)器端的數(shù)據(jù)交互.
//客戶端import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;
public class MyClent { public static void main(String[] args) { PrintStream ps = null; BufferedReader br = null; BufferedReader message = null; try { Socket scoket = new Socket("127.0.0.1", 1254); ps = new PrintStream(scoket.getOutputStream()); br = new BufferedReader(new InputStreamReader(scoket.getInputStream())); message = new BufferedReader(new InputStreamReader(System.in)); while(true){ ps.println("客戶端向服務(wù)器發(fā)送的數(shù)據(jù)是:"+message.readLine()); System.out.println(br.readLine()); ps.flush(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
//服務(wù)器端import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;
public class MyServer {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub PrintStream ps = null; BufferedReader br = null; BufferedReader message = null; try { ServerSocket server = new ServerSocket(1254); Socket scoket = server.accept();// new Test(scoket); ps = new PrintStream(scoket.getOutputStream()); br = new BufferedReader(new InputStreamReader(scoket.getInputStream())); message = new BufferedReader(new InputStreamReader(System.in)); while(true){ System.out.println(br.readLine()); ps.println("服務(wù)器向客戶端發(fā)送的數(shù)據(jù)是:"+message.readLine()); ps.flush(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
}/p/font/p
你好。訪問Web服務(wù)器(例:),需要根據(jù)Http協(xié)議發(fā)送相關(guān)請求頭,否則Web服務(wù)器不會處理。這種處理就類似于你的代碼:(line = read.readLine()) != null。當然Web服務(wù)器驗證的不是這個。
HTTP協(xié)議這里不會詳解,有需要可以查詢相關(guān)資料。
在你的代碼中加入:
long?start?=?System.currentTimeMillis();
SocketAddress?address?=?new?InetSocketAddress(InetAddress.getByName("").getHostAddress(),?80);
Socket?socket?=?new?Socket();
socket.connect(address);
System.out.println("連接成功-"?+?socket.getInetAddress()?+?"?:?"
+?(System.currentTimeMillis()?-?start)?+?"ms");
/**編寫簡單HTTP請求頭*/
StringBuilder?sb?=?new?StringBuilder();
sb.append("GET?/?HTTP/1.1\r\n")
.append("Host:?\r\n")
.append("Connection:?Close\r\n\r\n");
OutputStream?out?=?socket.getOutputStream();
out.write(sb.toString().getBytes());
out.flush();
/**發(fā)送完成后flush*/
BufferedReader?read?=?new?BufferedReader(new?InputStreamReader(
socket.getInputStream()));
/**循環(huán)等待read接收*/
boolean?b?=?true;
while?(b)?{
if?(read.ready())?{
String?line?=?null;
while?((line?=?read.readLine())?!=?null)?{
System.out.println(line);
}
b?=?false;
}
}
新聞名稱:用java代碼訪問服務(wù)器 java開發(fā)服務(wù)器
URL標題:http://m.rwnh.cn/article22/hhgpcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、動態(tài)網(wǎng)站、軟件開發(fā)、網(wǎng)站建設(shè)、App設(shè)計、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)