Line breaks, spaces, and other reserved characters need to be URL-encoded, eg:
accesskey=key&adminusername=Name%20of%20Person&ticketid=488&message=asdf%20asdf%0D%0ANothing%20past%20that%20first%20line%20goes%20%3A%28%0D%0Asad%20sad%20sad&action=addticketreply&responsetype=json&username=admin&password=mypassword
If you are sending the values via a POST request, then make sure you are usiug an up-to-date version of Indy. TIdHTTP.Post(TStrings)
handles the encoding for you, eg:
var
Params: TStringList;
begin
Params := TStringList.Create;
try
Params.Add('accesskey=key');
Params.Add('adminusername=Name of Person');
Params.Add('ticketid=488');
Params.Add('message=asdf asdf'+CRLF+'Nothing past that first line goes :('+CRLF+'sad sad sad');
Params.Add('action=addticketreply');
Params.Add('responsetype=json');
Params.Add('username=admin');
Params.Add('password=mypassword');
IdHTTP1.Post(URL, Params);
finally
Params.Free;
end;
end;
However, if you are sending the values via a URL query string, then you have to manually encode the URL, TdHTTP
will not handle that for you, eg:
var
URL: String;
begin
URL := 'http://host/path?accesskey=key&adminusername=Name of Person&ticketid=488&message=asdf asdf'+CRLF+'Nothing past that first line goes :('+CRLF+'sad sad sad&action=addticketreply&responsetype=json&username=admin&password=mypassword';
IdHTTP1.Get(TIdURI.URLEncode(URL));
end;
Or:
var
URL: String;
Params: TStringList;
I: Integer;
begin
Params := TStringList.Create;
try
Params.Add('accesskey=key');
Params.Add('adminusername=Name of Person');
Params.Add('ticketid=488');
Params.Add('message=asdf asdf'+CRLF+'Nothing past that first line goes :('+CRLF+'sad sad sad');
Params.Add('action=addticketreply');
Params.Add('responsetype=json');
Params.Add('username=admin');
Params.Add('password=mypassword');
for I := 0 to Params.Count-1 do
Params[i] := TIdURI.ParamsEncode(Params[i]);
Params.Delimiter := '&';
Params.StrictDelimiter := True;
Params.Quotechar := #0;
URL := 'http://host/' + TIdURI.PathEncode('path') + '?' + Params.DelimitedText;
IdHTTP1.Get(URL);
finally
Params.Free;
end;
end;