所以我环顾四周,描述我问题的唯一问题是6岁,有0个答案,所以我想我会再试一次。
我正在使用delphi 2009和Indy10。
我正在尝试使用HTTPS将final String mFileName = "sample.mp4";
try{
FileOutputStream mFileOutputStream = openFileOutput(mFileName, Context.MODE_PRIVATE );
mFileOutputStream.write(getResources().getAssets().open("sample_video.mp4").read());
mFileOutputStream.close();
Log.v(TAG, "Success");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(mVideoView);
mVideoView.setMediaController(mediaController);
mVideoView.setVideoPath(getFilesDir().getAbsolutePath()+"/sample.mp4");
mVideoView.start();
发布到API。
JSON
我看到很多答案表明Instance.FHTTP := TIdHTTP.Create;
Instance.FHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(Instance.FHTTP);
{$IFDEF DEBUG}
Instance.FHTTP.ProxyParams.ProxyPort := 8888;
Instance.FHTTP.ProxyParams.ProxyServer := '127.0.0.1';
{$ENDIF}
Instance.FHTTP.Request.ContentType := 'application/json';
Instance.FAccessToken := Instance.FHTTP.Post('https://somedomain.com/api/endpoint', '{JSONName: JSONValue }' );
有效负载应该在JSON
方法中作为string
param给出,但是当我尝试这样做时,它需要一个文件路径,然后抛出错误说:
'无法打开文件" [项目路径{JSONName:JSONValue}]"。找不到指定的文件'。
如果我将TidHTTP.Post
添加到JSON
并添加将其作为参数添加,则只需将JSON添加到请求的标头中。
非常感谢任何帮助。
答案 0 :(得分:4)
带有第二个字符串的Post
重载确实将其解释为文件名:
function Post(AURL: string; const ASourceFile: String): string; overload;
这就是为什么这不起作用的原因。您需要改为使用带有TStream
:
function Post(AURL: string; ASource: TStream): string; overload;
您可以将JSON放在TStringStream
:
StringStream := TStringStream.Create('{JSONName: JSONValue }', TEncoding.UTF8);
try
Instance.FAccessToken := Instance.FHTTP.Post('https://somedomain.com/api/endpoint', StringStream);
finally
StringStream.Free;
end;