web-dev-qa-db-ja.com

HTTP Putはどのように行いますか?

Webサービスコンポーネントを備えたこのソフトウェアがあります。

今、このシステムの管理者が来て、webservicesコンポーネントを使用してシステムにデータをインポートしたいと考えています。

だから、私はこのことを理解するためにドキュメントを読みに行きました、そして私はこのようなものを見ています:


私が話していることを見るにはここをクリックしてください(これは、Firefox、Chrome、およびサファリで最適に見えます)

このドキュメントには、GET、POST、PUT、DELETEなどのHTTP動詞を使用してシステムとやり取りする例が記載されています。しかし、限られた経験の中で、HTTP PUTもDELETEも送信する必要はありませんでした。

どうやってやるの? method = "post"またはmethod = "get"を持つHTMLフォームを作成しました。リクエストは、action属性(action = "someResource")で指定されたものに送信されます。しかし、私はこのPUTのことをどうすればいいのか本当に分かりません。

推測する必要がある場合、何らかのHTTPリクエストオブジェクトを作成し、そのすべてのプロパティを設定し、何らかの方法でリソースにPUTするデータを含めるアプリケーションを構築する必要があります(


私はREST用語、これは私にとって非常に新しいものです)を使用しようとしています

XHTML、CSS、JavaScriptなどのことを知っているので、私はWeb開発者だと思っていましたが、Webの基礎(HTTP)について何も知らないように見え始めています。

編集

PS:私は主に.netでプログラムしています。そのため、.netの例はどれも素晴らしいものです。

68
Ronnie Overby

HttpWebRequestを使用したC#の例を次に示します。

using System;
using System.IO;
using System.Net;

class Test
{
        static void Main()
        {
                string xml = "<xml>...</xml>";
                byte[] arr = System.Text.Encoding.UTF8.GetBytes(xml);
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/");
                request.Method = "PUT";
                request.ContentType = "text/xml";
                request.ContentLength = arr.Length;
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(arr, 0, arr.Length);
                dataStream.Close();
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string returnString = response.StatusCode.ToString();
                Console.WriteLine(returnString);
        }
}

Update:System.Net.HttpにHttpClientクラスが追加されました( NuGetパッケージとして利用可能 )より簡単に:

using System;
using System.Net.Http;

class Program
{
    static void Main()
    {
        var client = new HttpClient();
        var content = new StringContent("<xml>...</xml>");
        var response = client.PutAsync("http://localhost/", content).Result;
        Console.WriteLine(response.StatusCode);
    }
}
23
Jason DeFontes

FORMタグはGETのみをサポートしているため、PUTとDELETEではAJAXを使用してXMLHttpRequestsを作成する必要があります。POST.

JQueryの場合:

 $.ajax( {
       url: '/controller/action',
       type: 'PUT',
       data: function() { ...package some data as XML },
       dataType: 'xml',
       ... more options...
 );

jQuery ajax options ページに関する注意は、一部のブラウザがリクエストタイプのPUTおよびDELETEをサポートしていないことを警告しています。 FWIW、PUTは使用したことがないが、IEおよびFFでDELETEを使用した。SafariまたはOperaでテストしていない。

15
tvanfosson

CURLで行う方法は次のとおりです。 cURLを使用してRESTful Railsをテストする方法

または...間違いなくHTMLフォームを使用できます。アプリが本当にRESTfulであれば、RESTアクションを理解し、使用するメソッドに基づいて特定のアクションのみを実行できます。

8
Tony

RESTClient と呼ばれるこの非常にクールなフリーソフトウェアを見つけました。

さまざまな動詞、ヘッダーと本文の手動設定、認証情報の設定、ssl、テストスクリプトの実行などを使用して、HTTPリソースとやり取りできます。

これは、実際にソフトウェアのデータベースに対するRESTful APIである「webservices」ソフトウェアと対話する方法を理解するのに役立ちます。

6
Ronnie Overby

HTMLフォームを使用してPUTすることはできません(仕様では GET/POSTのみ がフォームに定義されています)。

ただし、HTTP APIでは、GETまたはPOSTを許可するのと同じ方法で、PUTを許可する必要があります。たとえば、 Java HTTPClient documentation です。これは、他のすべてのHTTP動詞とともにPUTの詳細を示します。

使用している言語はわかりませんが、HTTP PUTを実行するアプリを作成するのは簡単なことだと思います。

6
Brian Agnew

chrome拡張機能 https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm としてAPIをテストします

2
everconfusedGuy

「今、このシステムの管理者が来て、webservicesコンポーネントを使用してシステムにデータをインポートしたいと考えています。」

WebサービスはHTMLフォームとはほとんど関係ありません。

Webサービスリクエストは、Javascript(Ajaxなど)から実行されるか、アプリケーションプログラムから実行されます。

C#またはVB HTTPを使用して、特定のデータセットで特定のWebサービスURLにPutを実行するプログラムを作成します。

ここに、たとえば、サンプルVB code: http://developer.yahoo.com/dotnet/howto-rest_vb.html#post

「POST」のメソッド文字列を「PUT」に置き換えます。

1
S.Lott

Libcurl.NETを試してみてください: http://sourceforge.net/projects/libcurl-net/

1
user141682

ここ は、PUTファイルにドラッグアンドドロップできるツールです

1
Yishai

いくつかのネットワーク管理者がさまざまな理由でブロックアウトしているだけです。したがって、PUTの代わりにPOSTを使用する必要があります。操作を確認してください。

0
Srikar Doddi

PUTおよびDELETEはHTML4の一部ではありませんが、HTML5仕様に含まれています。このため、ほとんどの一般的なブラウザはHTML4に焦点を合わせているため、それらを適切にサポートしていません。しかし、それらは間違いなくHTTPの一部であり、常にそうでした。ブラウザー以外のクライアントを使用するか、HTML5対応ブラウザーのフォームを使用してPUTを実行します。

更新:PUTおよびDELETEは、フォームのHTML5の一部ではなくなりました。参照: http://www.w3.org/TR/html5/association-of-controls-and-forms.html#attr-fs-method

0
aehlke