0

Delphi XE2 では、メモの行を IdHTTP.Put を使用して Web スペースのファイルにアップロードしようとしています。

procedure TForm1.btnUploadClick(Sender: TObject);
var
  StringToUpload: TStringStream;
begin
  StringToUpload := TStringStream.Create('');
  try
    StringToUpload.WriteString(memo.Lines.Text);
    // Error: HTTP/1.1 405 Method Not Allowed.
    IdHTTP1.Put(edtOnlineFile.Text, StringToUpload); 
  finally
    StringToUpload.Free;
  end;
end;

しかし、私はいつもこのエラーメッセージを受け取ります:

ここに画像の説明を入力

エラーを回避してアップロードするにはどうすればよいですか?

4

2 に答える 2

3

PUTこれは、HTTP サーバーがその URL のメソッドをサポートしていないことを意味します (サポートされていない場合)。それについてあなたができることは何もありません。通常は別の方法でデータをアップロードするPOSTか、FTP などのまったく別のプロトコルを使用する必要があります。

ところで、このように使用する場合は、メソッドを使用する場合はTStringStreamリセットすることを忘れないでください:PositionWriteString()

StringToUpload.WriteString(memo.Lines.Text);
StringToUpload.Position := 0;

それ以外の場合は、代わりにコンストラクターを使用します。

StringToUpload := TStringStream.Create(memo.Lines.Text);
于 2013-07-09T22:46:43.943 に答える
0

上記のコードに感謝します。おそらく、ストリーム コンストラクターを支援するための小さなヘルパー関数を含むもう少し情報があります。

  //Helper function to make JSON string correct for processing with POST / GET
  function StringToStream(const AString: string): TStream;
  begin
     Result := TStringStream.Create(AString);
  end;

 //somewhere in your code, I am posting to Spring REST, encoding must be utf-8
 IdHTTP1.Request.ContentType := 'application/json'; //very important
 IdHTTP1.Request.ContentEncoding := 'utf-8'; //which encoding?
 response := IdHTTP1.Put(URL, StringToStream(body)); //response,URL,body are declared as String
于 2016-01-01T10:12:14.263 に答える