IdHTTP1元件問題 |
答題得分者是:GrandRURU
|
超級賽亞人3
一般會員 發表:38 回覆:53 積分:23 註冊:2007-06-05 發送簡訊給我 |
小弟最近在寫一網路程式
我使用http的方式連上server 我使用了IdHTTP元件 IdHTTP1->Host IdHTTP1->Port 在這元件中我使用了host與port 但是要連上server的request必須還要有使用者的名稱與密碼 也就是username與password 可是我在 IdHTTP1-> 之後並沒有找到這相關的 請問知道的大大能否教我 使用IdHTTP或是使用IdTCPClient 需要怎麼傳送我的username與password |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
我有看到耶
有看到一個參考網站:http://www.vba90.com/post/vb31/vb31156.htm 擷錄解答內容: idhttp1.Request.Username idhttp1.Request.Password ===================引 用 超級賽亞人3 文 章=================== 小弟最近在寫一網路程式 我使用http的方式連上server 我使用了IdHTTP元件 IdHTTP1->Host IdHTTP1->Port 在這元件中我使用了host與port 但是要連上server的request必須還要有使用者的名稱與密碼 也就是username與password 可是我在 IdHTTP1-> 之後並沒有找到這相關的 請問知道的大大能否教我 使用IdHTTP或是使用IdTCPClient 需要怎麼傳送我的username與password |
超級賽亞人3
一般會員 發表:38 回覆:53 積分:23 註冊:2007-06-05 發送簡訊給我 |
GrandRURU 大大你好
此問題我解決了 謝謝您 接著http server是一台攝影機 我該如何把影像抓到Image元件中呢? 我之前有參考一篇,可惜忘記網址了。 我只記得在IdHTTP中有get與post可以用 不知道我下面用法,是否可以把網路攝影機的影像送到image元件上 image =IdHTTP->Get('http://192.168.0.120/cgi-bin/viewer/video.jpg'); 那如果我要控制攝影機 IdHTTP->post('http://192.168.0.120/cgi-bin/viewer/camctrl.cgi?channel=0&camid=1&move=left'); |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
如果是要抓jpg圖檔,「http://www.vba90.com/post/vb35/vb35157.htm」這篇或許有你要的解答
至於控制CCD…我就無能為力了 [code delphi] uses jpeg; function TForm1.GetImage(url: string): boolean; var MemoryStream:TMemoryStream; Idhttp:TIdhttp; Img: TJPEGImage; begin MemoryStream:=TMemoryStream.Create ; Idhttp:=Tidhttp.Create(nil); Img := TJPEGImage.Create; try Idhttp.Get(url,MemoryStream); MemoryStream.Position := 0; Img.LoadFromStream(MemoryStream); Image1.Picture.Bitmap.Assign(Img); finally MemoryStream.Free ; Idhttp.Free; Img.Free; end; end; [/code] ===================引 用 超級賽亞人3 文 章=================== GrandRURU 大大你好 此問題我解決了 謝謝您 接著http server是一台攝影機 我該如何把影像抓到Image元件中呢? 我之前有參考一篇,可惜忘記網址了。 我只記得在IdHTTP中有get與post可以用 不知道我下面用法,是否可以把網路攝影機的影像送到image元件上 image =IdHTTP->Get('http://192.168.0.120/cgi-bin/viewer/video.jpg'); 那如果我要控制攝影機 IdHTTP->post('http://192.168.0.120/cgi-bin/viewer/camctrl.cgi?channel=0&camid=1&move=left'); |
超級賽亞人3
一般會員 發表:38 回覆:53 積分:23 註冊:2007-06-05 發送簡訊給我 |
GrandRURU 大大您好
我有加入取影像的部分 但是會有錯誤,如下圖 是哪邊有問圖呢? 能否幫我看一下,謝謝。 [code cpp] void __fastcall TForm1::Button1Click(TObject *Sender) { if ((Edit1->Text != "") && (Edit2->Text != "")) { //設定HTTP Client的一些基本資訊 IdHTTP1->Host = Edit1->Text; IdHTTP1->Port = StrToInt(Edit2->Text); IdHTTP1->Request->Username = Edit3->Text; IdHTTP1->Request->Password = Edit4->Text; //與HTTP Server連線 IdHTTP1->Connect(); } //{ Button1->Enabled=false; TMemoryStream *ms=new TMemoryStream; TJPEGImage *jpg=new TJPEGImage; IdHTTP1->Get("http://" Edit1->Text " /cgi-bin/viewer/video.jpg", ms); ms->Position=0; jpg->LoadFromStream(ms); Image1->Stretch=true; Image1->Picture->Assign(jpg); delete jpg; delete ms; Button1->Enabled=true; //} } [/code] IP攝影機程式 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
超級賽亞人3
一般會員 發表:38 回覆:53 積分:23 註冊:2007-06-05 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
一模一樣啊
連結是我的大頭照了,請試試吧 [code cpp] //--------------------------------------------------------------------------- #include #pragma hdrstop #include #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TMemoryStream *MemoryStream = new TMemoryStream(); TJPEGImage *Img = new TJPEGImage(); try { IdHTTP1->HandleRedirects = true; IdHTTP1->Get("http://img54.imageshack.us/img54/3138/normal4a8ae38ce2a72.jpg", MemoryStream); MemoryStream->Position = 0; Img->LoadFromStream(MemoryStream); Image1->Picture->Bitmap->Assign(Img); } __finally { delete MemoryStream; delete Img; } } //--------------------------------------------------------------------------- [/code]
編輯記錄
GrandRURU 重新編輯於 2010-12-06 18:52:14, 註解 增加轉址屬性(IdHTTP1->HandleRedirects = true;)程式碼‧
|
超級賽亞人3
一般會員 發表:38 回覆:53 積分:23 註冊:2007-06-05 發送簡訊給我 |
GrandRURU 大大你好
我把問題先簡化 先測試連線部分 接著再登入使用者名稱與密碼 連線部分我把連線位址換成某個IP攝影機的位址 就會發生錯誤 IP攝影機位址: [code cpp] //--------------------------------------------------------------------------- #include #pragma hdrstop #include #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TMemoryStream *MemoryStream = new TMemoryStream(); TJPEGImage *Img = new TJPEGImage(); try { IdHTTP1->HandleRedirects = true; IdHTTP1->Get("http://ebdemo.8800.org:47130/cgi-bin/viewer/video.jpg", MemoryStream); MemoryStream->Position = 0; Img->LoadFromStream(MemoryStream); Image1->Picture->Bitmap->Assign(Img); } __finally { delete MemoryStream; delete Img; } } //--------------------------------------------------------------------------- [/code] |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
會不會是Indy版本的問題?
我的是Indy10.2.3 / 10.5.5 BCB6 就利用你提供的IP攝影機位址來截圖,一切正常 而設計時期產生的「EIdConnClosedGracefully : Connection Closed Gracefully」例外(就是你之前說的錯誤視窗),不一定是真的例外。 常發生在對於不是client端主動切斷連線時的一種提醒,在程式運作時期不會發生 重要的是圖有出來就好了 最後,Indy10如果要用get連線 可以參考 http://topic.csdn.net/u/20100907/19/0103dd26-2c57-40da-a3bf-9eec39e3bb45.html Request設定後,直接get就行了 ===================引 用 超級賽亞人3 文 章=================== GrandRURU 大大你好 我把問題先簡化 先測試連線部分 接著再登入使用者名稱與密碼 連線部分我把連線位址換成某個IP攝影機的位址 就會發生錯誤 IP攝影機位址: |
超級賽亞人3
一般會員 發表:38 回覆:53 積分:23 註冊:2007-06-05 發送簡訊給我 |
GrandRURU 大大你好
這部分的例外處理機制我都解決了我是參考此網站的例外處理機制解決的 可是我reques->username與reques->password部分PTZIP攝影機都沒有回應我 我猜測這跟此IP攝影機的http指令有關。後來我嘗試把讀圖部分可以即時而加入Timer 但有點不順,不知原因在哪?能否賜教。感激您。 [code cpp] //--------------------------------------------------------------------------- #include #pragma hdrstop #include #include "Unit1.h" #include //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //TMemoryStream *ms=new TMemoryStream; //TJPEGImage *jpg=new TJPEGImage; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { Timer1->Interval = 30; Timer1->Enabled = true; SpeedButton1->Enabled = false; SpeedButton2->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::SpeedButton2Click(TObject *Sender) { SpeedButton1->Enabled = true; SpeedButton2->Enabled = false; //IdHTTP1->Disconnect(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { TMemoryStream *ms=new TMemoryStream; TJPEGImage *jpg=new TJPEGImage; IdHTTP1->Get("http://ebdemo.8800.org:47130/cgi-bin/viewer/video.jpg", ms); ms->Position=0; jpg->LoadFromStream(ms); Image1->Stretch=false; Image1->Picture->Assign(jpg); //delete jpg; //delete ms; } //--------------------------------------------------------------------------- [/code] |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
建議你的timer可以改成thread來處理
不過demo還是可以用用 timer我小改了一點點,使用上還ok 只是server的loading會很大 [code cpp] void __fastcall TForm1::Timer1Timer(TObject *Sender) { Timer1->Enabled = false; TMemoryStream *ms=new TMemoryStream; TJPEGImage *jpg=new TJPEGImage; IdHTTP1->Get("http://ebdemo.8800.org:47130/cgi-bin/viewer/video.jpg", ms); ms->Position=0; jpg->LoadFromStream(ms); Image1->Picture->Assign(jpg); delete jpg; delete ms; Timer1->Interval = 100; Timer1->Enabled = true; } [/code] |
超級賽亞人3
一般會員 發表:38 回覆:53 積分:23 註冊:2007-06-05 發送簡訊給我 |
GrandRURU 大大你好
謝謝你的幫忙問題都解決了 另外,分享我解決的方法 IdHTTP->Request->Username與IdHTTP->Request->Password登入的使用者帳密 似乎不適用於PTZ IP攝影機上,而是要使用特殊的方法。 這部分我有爬了數十篇的文,很多人都有遇到這樣的問題,但都沒有較好的解答 但我在一網站上有看到解決得方法如下:
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |