c訪問http
http是協議
不是文件
你這個說法就有問題了。
如果你想用C讀網頁 可以考慮使用socket 不過還是有些麻煩的。
B. C語言http訪問本機如何寫host
lz要先知道什麼是socket,它是TCP/IP協議的API。再上層是httpudp之類傳輸報文協議。而什麼是伺服器,如你所說tomcat伺服器,他是一個http(s)伺服器。處理由客戶發送的HTTP報文。並返回報文給客戶。簡單來說,http就是socket的一個封裝。所以c語言使用socket理所當然能訪問任何伺服器。至於使用什麼格式,你可以看看HTTP報文格式。
C. 如何用c實現http post json
http是基於Socket通信的一種通信規約,post是http規約的一種功能,json是常用於字元串解釋型編程語言及一些腳本上用的對象格式。
D. c語言訪問伺服器
lz要先知道什麼是socket,它是TCP/IP協議的API。再上層是http udp之類傳輸報文協議。而什麼是伺服器,如你所說tomcat伺服器,他是一個http(s)伺服器。處理由客戶發送的HTTP報文。並返回報文給客戶。
簡單來說,http就是socket的一個封裝。所以c語言使用socket理所當然能訪問任何伺服器。至於使用什麼格式,你可以看看HTTP報文格式。
E. C語言如何利用socket進行HTTP訪問
你用SOCKET訪問HTTP就相當於你編個象IE一樣的程序了,所以,工作量大。
有現在的HTTP控制項對象,這樣工作量小多了。
F. C語言或者C++如何調用一個http介面並得到返回結果
用jni
首先
java
中
public
class
testhello
{
static
{
system.loadlibrary("testhellos");
}
public
static
native
void
hello(string
msg);
public
native
void
getsysid();
public
native
string
getkeycode(string
sysid);
public
native
boolean
testkeycode(string
sysid,
string
keycode);
public
static
void
main(string[]
args)
{
//
hello("hello,kimm!");
testhello
t=
new
testhello();
t.getsysid();
}
}
用javac
testhello.java,
java
testhello,javah
-classpath
.
-verbose
testhello
。將生產的頭文件用到c++
中的
heardfileds
中。然後在
sources
files
中實現
heardfieds
的方法。實現的方法,其實就是你要調用c++的方法、
G. 如何用c語言實現http伺服器
去看一下《Advanced Linux Programming》這本書吧,第11章講的就是怎麼用C語言實現一Http伺服器。 這里有下載地址(英文的): http://www.advancedlinuxprogramming.com/alp-folder 英文看起來不順的話可以上網找找有沒有中文版的這本書,應該叫Linux高級編程吧~~~參考資料: http://www.advancedlinuxprogramming.com/alp-folder
H. c語言用http協議通訊
connect
write("請求字元串");
。。。
write("請求字元串");
I. 如何用C語言打開網站
參考代碼如下:
#include<windows.h>
intmain(void)
{
ShellExecute(NULL,"open","http://www..com",NULL,NULL,SW_MINIMIZE);
return0;
}
例子中是最小化打開的,還可以是最大化SW_MAXIMIZE,隱藏SW_HIDE等。
J. 如何通過 c/c++ 實現http請求
示常式序,轉載自CNBLOG,做了針對C語言編譯器的適應性修正:
#include<stdio.h>
#include<winsock2.h>
#pragmacomment(lib,"ws2_32.lib")/*WinSock使用的庫函數*/
/*定義常量*/
#defineHTTP_DEF_PORT80/*連接的預設埠*/
#defineHTTP_BUF_SIZE1024/*緩沖區的大小*/
#defineHTTP_HOST_LEN256/*主機名長度*/
char*http_req_hdr_tmpl="GET%sHTTP/1.1 "
"Accept:image/gif,image/jpeg,*/* Accept-Language:zh-cn "
"Accept-Encoding:gzip,deflate Host:%s:%d "
"User-Agent:Huiyong'sBrowser<0.1> Connection:Keep-Alive ";
/**************************************************************************
*
*函數功能:解析命令行參數,分別得到主機名,埠號和文件名.命令行格式:
*[http://www..com:8080/index.html]
*
*參數說明:[IN]buf,字元串指針數組;
*[OUT]host,保存主機;
*[OUT]port,埠;
*[OUT]file_name,文件名;
*
*返回值:void.
*
**************************************************************************/
voidhttp_parse_request_url(constchar*buf,char*host,
unsignedshort*port,char*file_name)
{
intlength=0;
charport_buf[8];
char*buf_end=(char*)(buf+strlen(buf));
char*begin,*host_end,*colon,*file;
/*查找主機的開始位置*/
begin=(char*)(strstr(buf,"//"));
begin=(begin?begin+2:(char*)(buf));
colon=strchr(begin,':');
host_end=strchr(begin,'/');
if(host_end==NULL)
{
host_end=buf_end;
}
else
{/*得到文件名*/
file=strrchr(host_end,'/');
if(file&&(file+1)!=buf_end)
strcpy(file_name,file+1);
}
if(colon)/*得到埠號*/
{
colon++;
length=host_end-colon;
memcpy(port_buf,colon,length);
port_buf[length]=0;
*port=atoi(port_buf);
host_end=colon-1;
}
/*得到主機信息*/
length=host_end-begin;
memcpy(host,begin,length);
host[length]=0;
}
intmain(intargc,char**argv)
{
WSADATAwsa_data;
SOCKEThttp_sock=0;/*socket句柄*/
structsockaddr_inserv_addr;/*伺服器地址*/
structhostent*host_ent;
intresult=0,send_len;
chardata_buf[HTTP_BUF_SIZE];
charhost[HTTP_HOST_LEN]="127.0.0.1";
unsignedshortport=HTTP_DEF_PORT;
unsignedlongaddr;
charfile_name[HTTP_HOST_LEN]="index.html";
charfile_nameforsave[HTTP_HOST_LEN]="index1.html";
FILE*file_web;
if(argc!=2)
{
printf("[Web]input:%shttp://www.test.com[:8080]/index.html",argv[0]);
return-1;
}
http_parse_request_url(argv[1],host,&port,file_name);
WSAStartup(MAKEWORD(2,0),&wsa_data);/*初始化WinSock資源*/
addr=inet_addr(host);
if(addr==INADDR_NONE)
{
host_ent=gethostbyname(host);
if(!host_ent)
{
printf("[Web]invalidhost ");
return-1;
}
memcpy(&addr,host_ent->h_addr_list[0],host_ent->h_length);
}
/*伺服器地址*/
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(port);
serv_addr.sin_addr.s_addr=addr;
http_sock=socket(AF_INET,SOCK_STREAM,0);/*創建socket*/
result=connect(http_sock,(structsockaddr*)&serv_addr,sizeof(serv_addr));
if(result==SOCKET_ERROR)/*連接失敗*/
{
closesocket(http_sock);
printf("[Web]failtoconnect,error=%d ",WSAGetLastError());
return-1;
}
/*發送HTTP請求*/
send_len=sprintf(data_buf,http_req_hdr_tmpl,argv[1],host,port);
result=send(http_sock,data_buf,send_len,0);
if(result==SOCKET_ERROR)/*發送失敗*/
{
printf("[Web]failtosend,error=%d ",WSAGetLastError());
return-1;
}
file_web=fopen(file_nameforsave,"a+");
do/*接收響應並保存到文件中*/
{
result=recv(http_sock,data_buf,HTTP_BUF_SIZE,0);
if(result>0)
{
fwrite(data_buf,1,result,file_web);
/*在屏幕上輸出*/
data_buf[result]=0;
printf("%s",data_buf);
}
}while(result>0);
fclose(file_web);
closesocket(http_sock);
WSACleanup();
return0;
}