2009-07-25 184 views
9

我是一名遊戲和3D圖形背景的程序員,目前我想刷新我的網絡和Web開發技能。發送iPhone HTTP請求到Apache PHP網絡服務器

我有一個任務,我想完成這項工作。我的想法是我希望能夠發送HTTP請求或類似於我的網絡服務器,它運行基於LAMP的設置。我想知道如何使用Cocoa Touch框架將包含一些信息的HTTP請求發送到我的Web服務器。

我希望Web服務器(使用PHP)能夠將發送的信息記錄到純文本文件中,以便日後可以使用它來生成圖表。對於我的例子,我們可以發送當前日期。

我認爲人們必須經常這樣做,我真的很想知道如何做到這一點。謝謝你的幫助。

P.S.如果您不知道Cocoa代碼以發送請求,那沒關係,我確定我可以弄清楚,但我想至少知道如何讓Linux服務器保存HTTP請求,最好是PHP但另一種適當的語言是好的。附加獎勵標記安全

另外:我在這個總的小白和需要的源代碼,歡呼聲:d

回答

11

如果您需要從iPhone或Mac客戶端向Web服務器發出HTTP請求,您確實無法通過像ASIHTTPRequest這樣的庫。該文檔是非常好,並涵蓋所有重要的主題,如:

  • 異步VS同步請求
  • 將數據發送到服務器
  • 使用跟蹤上傳/下載進度
  • 處理驗證
  • 用於存儲憑證的鑰匙串
  • 使用gzip壓縮請求主體

你應該check it out - 它會讓你的生活更輕鬆。

+0

非常感謝,看起來不錯+1 – 2009-07-27 10:00:38

-1

不是一個真正的服務器端的傢伙,但是在發送HTTP請求可以在幾個方式來實現。最簡單的方法是使用+ NSString stringWithContentsOfURL:並在URL中使用GET參數。這將在您指定的URL處打擊服務器,並且GET參數可以包含數據。返回值可以忽略,而且應該很小。

現在不會深入研究它,但我相信你會使用NSStream和NSURLRequest來構建更復雜的查詢,例如使用POST。

+0

「現在不打算深入研究」 - >那你爲什麼在這裏發帖? – twerdster 2010-10-16 13:13:07

9

好吧沒有人給出答案,於是我離開,發現了一個項目,詳細介紹瞭如何使用Mac客戶端本機應用程序或PHP網頁客戶端執行此操作。我稍微修改了一些原始的服務器代碼,只是爲了讓你知道我已經在我自己的網站上測試過了,它可以將文件上傳到Web服務器。

PHP服務器(uploader.php)

<?php 
$target = "upload/"; 
$target = $target . basename($_FILES['uploaded']['name']); 
$filename = "\"" . basename($_FILES['uploaded']['name']) . "\""; 
$ok = 1; 
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
{ 
    echo "$filename"; 
    echo "was uploaded successfully"; 
} 
else 
{ 
    echo "$filename"; 
    echo "upload failed"; 
} 
?> 

Web客戶端(的index.php)

<form enctype="multipart/form-data" action="uploader.php" method="POST"> 
<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
Choose a file to upload: <input name="uploaded" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 

可可客戶

的可可客戶端的代碼是相當長的並且符合abo的代碼ve可以找到here。這裏有一個alternative,我認爲這是更好的代碼,但是我沒有使用上面的PHP服務器對它進行測試。我希望你可以修改它,如果有的話,只需要很少的修改。

這裏是可可一個基本的方式來發送文本POST請求發送到Web服務器:

NSString* content = [@"item=" stringByAppendingString:@"Something to 
Post"]; 

    NSURL* url = [NSURL URLWithString:@"http://www.mysite.com/index.php"]; 
    NSMutableURLRequest* urlRequest = [[NSMutableURLRequest alloc] initWithURL:url]; 
    [urlRequest setHTTPMethod:@"POST"]; 
    [urlRequest setHTTPBody:[content dataUsingEncoding:NSASCIIStringEncoding]]; 

我喜歡這個,因爲它是一個最小的解決方案,你可以很容易地建立在它希望這能幫助其他人如果他們碰到這個:)

+0

ASIHTTPRequest很棒(雖然很快就會被棄用),但有時候這只是你需要的。謝謝,布魯克! – Keller 2012-01-10 21:35:17