Вопросительный знак - это оператор с нулевым условием ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators ) , Короче и точнее писать, если вы используете C # 6 или выше.
Используя Инди. Поместите свои параметры в StringList (name=value) и просто назовите Сообщение с URL и StringList.
function PostExample: string;
var
lHTTP: TIdHTTP;
lParamList: TStringList;
begin
lParamList := TStringList.Create;
lParamList.Add('id=1');
lHTTP := TIdHTTP.Create;
try
Result := lHTTP.Post('http://blahblahblah...', lParamList);
finally
lHTTP.Free;
lParamList.Free;
end;
end;
Снова, библиотека Synapse TCP/IP к спасению. Используйте стандартную программу HTTPSEND HTTPPostURL.
function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean;
Ваш URL был бы ресурсом для регистрации также, URLDATA будет данными формы, и результаты XML возвратились бы как поток в ДАННЫХ.
Вот пример использования Indy для отправки JPEG на веб-сервер, на котором запущена Галерея
У меня есть больше примеров такого рода вещей (я использую их в заставке. написал на Delphi для проекта галереи, доступного здесь , или дополнительную информацию на веб-сайте галереи здесь ).
Я полагаю, что важным моментом является то, что JPEG передается в виде потока .
procedure AddImage(const AlbumID: Integer; const Image: TStream; const ImageFilename, Caption, Description, Summary: String);
var
Response: String;
HTTPClient: TidHTTP;
ImageStream: TIdMultipartFormDataStream;
begin
HTTPClient := TidHTTP.Create;
try
ImageStream := TIdMultiPartFormDataStream.Create;
try
ImageStream.AddFormField('g2_form[cmd]', 'add-item');
ImageStream.AddFormField('g2_form[set_albumId]', Format('%d', [AlbumID]));
ImageStream.AddFormField('g2_form[caption]', Caption);
ImageStream.AddFormField('g2_form[force_filename]', ImageFilename);
ImageStream.AddFormField('g2_form[extrafield.Summary]', Summary);
ImageStream.AddFormField('g2_form[extrafield.Description]', Description);
ImageStream.AddObject('g2_userfile', 'image/jpeg', Image, ImageFilename);
Response := HTTPClient.Post('http://mygallery.com/main.php?g2_controller=remote:GalleryRemote', ImageStream);
finally
ImageStream.Free;
end;
finally
HTTPClient.Free;
end;
end;