本文整理汇总了C++中curl_formadd函数的典型用法代码示例。如果您正苦于以下问题:C++ curl_formadd函数的具体用法?C++ curl_formadd怎么用?C++ curl_formadd使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了curl_formadd函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: backend_log
CURLcode backend_log(char * middleware, char * uuid, struct timeval tv, float value) {
CURL *curl;
CURLcode res;
char url[255], useragent[255], post[255];
sprintf(url, "%s/data/%s.json", middleware, uuid); /* build url */
sprintf(useragent, "vzlogger/%s (%s)", VZ_VERSION, curl_version());
sprintf(post, "?timestamp=%lu%lu&value=%f", tv.tv_sec, tv.tv_usec, value);
curl_global_init(CURL_GLOBAL_ALL);
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "value",
CURLFORM_PTRCONTENTS , value_str,
CURLFORM_END);
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "timestamp",
CURLFORM_PTRCONTENTS , ×tamp,
CURLFORM_END);
curl = curl_easy_init();
if (curl) {
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
curl_easy_setopt(curl, CURLOPT_USERAGENT, useragent);
curl_easy_setopt(curl, CURLOPT_VERBOSE, (int) opt.verbose);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl); /* always cleanup */
curl_formfree(formpost); /* then cleanup the formpost chain */
return res;
}
return -1;
}
开发者ID:ljmarkus,项目名称:volkszaehler.org,代码行数:43,代码来源:main.c
示例2: ov_curl_set_string
/* CURL Add in a string parameter */
int ov_curl_set_string(void *ov_msg_handle, const char *name, char *val)
{
ov_msg_t *ov_msg = (ov_msg_t*) ov_msg_handle;
assert(ov_msg->magic_no == OV_MSG_MAGIC_NO);
printf("SET MULTIPART ENTRY: NAME = '%s' VAL = '%s'\n", name, val);
curl_formadd(&ov_msg->formpost, &ov_msg->lastptr, CURLFORM_COPYNAME, name, CURLFORM_COPYCONTENTS, val, CURLFORM_END);
return 0;
}
开发者ID:Openversa,项目名称:openversa_C_v1,代码行数:11,代码来源:ov_curl.c
示例3: formadd_files
static int formadd_files(VALUE data_key, VALUE data_value, VALUE self) {
struct curl_state *state = get_curl_state(self);
VALUE name = rb_obj_as_string(data_key);
VALUE value = rb_obj_as_string(data_value);
curl_formadd(&state->post, &state->last, CURLFORM_PTRNAME, RSTRING_PTR(name),
CURLFORM_FILE, RSTRING_PTR(value), CURLFORM_END);
return 0;
}
开发者ID:mmoll,项目名称:patron,代码行数:10,代码来源:session_ext.c
示例4: throw
bool HTTP::POSTFile(std::string url, std::string filePath, std::string& output) throw (InputException) {
char errorBuffer[CURL_ERROR_SIZE];
std::string http_code;
std::string redirect = url;
char *ct = NULL;
// wait for timeout
wait();
// error detection
CURLcode result;
//open connection
CURL * curlPost = curl_easy_init();
struct curl_httppost *post = NULL;
struct curl_httppost *last = NULL;
if (curlPost) {
curl_formadd(&post, &last, CURLFORM_COPYNAME, "file", CURLFORM_FILE, filePath.c_str(), CURLFORM_END);
//Specify the API Endpoint
curl_easy_setopt(curlPost, CURLOPT_URL, url.c_str());
//Specify the HTTP Method
result = curl_easy_setopt(curlPost, CURLOPT_HTTPPOST, post);
// curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
// curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
// curl_easy_setopt(curl, CURLOPT_HEADER, 1);
// /**
// * Post Redirection - if we cant set this, the next redir is GET method
// 0 -> do not set any behavior
// 1 -> follow redirect with the same type of request only for 301 redirects.
// 2 -> follow redirect with the same type of request only for 302 redirects.
// 3 -> follow redirect with the same type of request both for 301 and 302 redirects.*/
// curl_easy_setopt(curl, CURLOPT_POSTREDIR, 3);
//
curl_easy_setopt(curlPost, CURLOPT_WRITEFUNCTION, &writeText);
curl_easy_setopt(curlPost, CURLOPT_WRITEDATA, &output);
// curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
// send request
result = curl_easy_perform(curlPost);
// clean
curl_easy_cleanup(curlPost);
// exception on request error
if (result != CURLE_OK) {
InputException e("HTTP POST File: Curl Error: " + std::string(errorBuffer));
throw e;
}
}
curl_formfree(post);
return true;
}
开发者ID:tomwagner,项目名称:IntelligentMPDClient,代码行数:55,代码来源:http.cpp
示例5: curlization
int curlization(char *uri) {
int ret=0;
buf->size=0;
curl_easy_setopt(curl, CURLOPT_USERAGENT, UserAgent);
curl_easy_setopt(curl, CURLOPT_URL, uri);
#ifdef HEADFUNC
bufhead->size=0;
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, head_callback);
#else
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
#endif
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buf);
//можно так
#ifdef FORMPOST
curl_formadd(&post, &last, CURLFORM_COPYNAME, "hash",CURLFORM_PTRCONTENTS, "aaaaaaaaaaaa", CURLFORM_END);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "hash2",CURLFORM_PTRCONTENTS, "bbbbbbbbbbbbb", CURLFORM_END);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "hash3",CURLFORM_PTRCONTENTS, "cccccccccccccccc", CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
#else
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, Post);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, sizeof(Post)-1);
#endif
if (curl_easy_perform(curl) != CURLE_OK) {
fprintf(stderr, "%s: %s\n\n", uri, (error[0]) ? error : "Unknown Error");
ret=-1;
}
curl_easy_cleanup(curl);
#ifdef FORMPOST
curl_formfree(post);
#endif
return ret;
}
开发者ID:carriercomm,项目名称:kalloc.github.com,代码行数:42,代码来源:post_http.c
示例6: curlUpload
static optional<string> curlUpload(const char* path, const char* url) {
struct curl_httppost *formpost=NULL;
struct curl_httppost *lastptr=NULL;
curl_global_init(CURL_GLOBAL_ALL);
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "fileToUpload",
CURLFORM_FILE, path,
CURLFORM_END);
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "submit",
CURLFORM_COPYCONTENTS, "send",
CURLFORM_END);
if(CURL* curl = curl_easy_init()) {
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, dataFun);
string ret;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ret);
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, escapeUrl(url).c_str());
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
// Internal CURL progressmeter must be disabled if we provide our own callback
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false);
// Install the callback function
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progressFunction);
CURLcode res = curl_easy_perform(curl);
if(res != CURLE_OK)
ret = string("Upload failed: ") + curl_easy_strerror(res);
curl_easy_cleanup(curl);
curl_formfree(formpost);
if (!ret.empty())
return ret;
else
return none;
} else
return string("Failed to initialize libcurl");
}
开发者ID:silidur,项目名称:keeperrl,代码行数:42,代码来源:file_sharing.cpp
示例7: curl_formadd
void HttpRequest::AddFile(const std::string& name, const std::string& localfilename,
const std::string& contenttype, const std::string& filename)
{
curl_formadd(&m_postargs, &m_postargslast,
CURLFORM_COPYNAME, name.c_str(),
CURLFORM_FILE, localfilename.c_str(),
CURLFORM_CONTENTTYPE, contenttype.c_str(),
CURLFORM_END);
m_upload = true;
}
开发者ID:rogerclark,项目名称:grumble,代码行数:11,代码来源:HttpRequest.cpp
示例8: sendChatAction
void sendChatAction(int chat_id, string action)
{
string URL = BOTAPI + "sendChatAction";
// ============ convert string to char array =========== //
char c[200];
strncpy(c, URL.c_str(), sizeof(c));
c[sizeof(c) - 1] = 0;
FILE *fp;
CURL *curl = init(c, "sendChatAction.json", fp);
// ============ add fields =========== //
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "chat_id", CURLFORM_COPYCONTENTS, to_string(chat_id).c_str(), CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "action", CURLFORM_COPYCONTENTS, action.c_str(), CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
formpost = NULL;
lastptr = NULL;
fclose(fp);
}
开发者ID:kvip,项目名称:TelegramBotAPIcppInterface,代码行数:20,代码来源:Methods.cpp
示例9: init_curl
void engine::attach(std::string server,
const std::string& key,
const std::string& file,
const std::string& filename,
int chunk_id,
int num_chunks,
report_level s,
validate_cert v)
{
init_curl(key, s, v);
server += "/attachments";
curl_easy_setopt(m_curl, CURLOPT_URL, server.c_str());
struct curl_httppost* formpost = NULL;
struct curl_httppost* lastptr = NULL;
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "Filedata",
CURLFORM_FILE, file.c_str(),
CURLFORM_END);
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "name",
CURLFORM_COPYCONTENTS, filename.c_str(),
CURLFORM_END);
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "chunk",
CURLFORM_COPYCONTENTS, base::to_string(chunk_id).c_str(),
CURLFORM_END);
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "chunks",
CURLFORM_COPYCONTENTS, base::to_string(num_chunks).c_str(),
CURLFORM_END);
curl_form_guard fg(formpost);
curl_easy_setopt(m_curl, CURLOPT_HTTPPOST, formpost);
if (s >= NORMAL) {
io::mout << "Uploading chunk '" << file << "'." << io::endl;
}
process_attach_chunk_responce(perform(), s);
}
开发者ID:GrantGatchel,项目名称:liquidfiles_unix,代码行数:41,代码来源:engine.cpp
示例10: setWebhook
void setWebhook(string url, string certificate)
{
string URL = BOTAPI + "setWebhook";
// ============ convert string to char array =========== //
char c[200];
strncpy(c, URL.c_str(), sizeof(c));
c[sizeof(c) - 1] = 0;
FILE *fp;
CURL *curl = init(c, "setWebhook.json", fp);
// ============ add fields =========== //
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "url", CURLFORM_COPYCONTENTS, url.c_str(), CURLFORM_END);
if (certificate != "")
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "certificate", CURLFORM_FILE, certificate.c_str(), CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
formpost = NULL;
lastptr = NULL;
fclose(fp);
}
开发者ID:kvip,项目名称:TelegramBotAPIcppInterface,代码行数:21,代码来源:Methods.cpp
示例11: getUpdates
void getUpdates(int offset, int limit, int timeout)
{
string URL = BOTAPI + "getUpdates";
// ============ convert string to char array =========== //
char c[200];
strncpy(c, URL.c_str(), sizeof(c));
c[sizeof(c) - 1] = 0;
FILE *fp;
CURL *curl = init(c, "getUpdates.json", fp);
// ============ add fields =========== //
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "offset", CURLFORM_COPYCONTENTS, to_string(offset).c_str(), CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "limit", CURLFORM_COPYCONTENTS, to_string(limit).c_str(), CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "timeout", CURLFORM_COPYCONTENTS, to_string(timeout).c_str(), CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
formpost = NULL;
lastptr = NULL;
fclose(fp);
}
开发者ID:kvip,项目名称:TelegramBotAPIcppInterface,代码行数:21,代码来源:Methods.cpp
示例12: curl_formadd
void FZHttpPost::AddKeyValuePair(const std::string& key, const std::string& value)
{
// Add a key-value pair to the POST
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, key.data(),
CURLFORM_COPYCONTENTS, value.data(),
CURLFORM_END);
// increment number of key-value pairs in post
++fPostPairs;
}
开发者ID:gtortone,项目名称:FzDAQ,代码行数:12,代码来源:FzHttpPost.cpp
示例13: forwardMessage
void forwardMessage(int chat_id, int from_chat_id, int message_id)
{
string URL = BOTAPI + "forwardMessage";
// ============ convert string to char array =========== //
char c[200];
strncpy(c, URL.c_str(), sizeof(c));
c[sizeof(c) - 1] = 0;
FILE *fp;
CURL *curl = init(c, "forwardMessage.json", fp);
// ============ add fields =========== //
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "chat_id", CURLFORM_COPYCONTENTS, to_string(chat_id).c_str(), CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "from_chat_id", CURLFORM_COPYCONTENTS, to_string(from_chat_id).c_str(), CURLFORM_END);
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "message_id", CURLFORM_COPYCONTENTS, to_string(message_id).c_str(), CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
formpost = NULL;
lastptr = NULL;
fclose(fp);
}
开发者ID:kvip,项目名称:TelegramBotAPIcppInterface,代码行数:21,代码来源:Methods.cpp
示例14: curl_formadd
void HttpFormRequest::addBinary(const std::string &key, const std::vector<char> &data) {
std::cout << "ttpFormRequest::addBinary(): " << data.data() << "\t" << data.size() << std::endl;
curl_formadd(
&_formPost,
&_lastPost,
CURLFORM_COPYNAME, key.c_str(),
CURLFORM_BUFFER, key.c_str(),
CURLFORM_BUFFERPTR, data.data(),
CURLFORM_BUFFERLENGTH, data.size(),
CURLFORM_END);
}
开发者ID:qoollo,项目名称:streamcentre-dismantler,代码行数:12,代码来源:HttpFormRequest.cpp
示例15: Qiniu_Io_PutFile
Qiniu_Error Qiniu_Io_PutFile(
Qiniu_Client* self, Qiniu_Io_PutRet* ret,
const char* uptoken, const char* key, const char* localFile, Qiniu_Io_PutExtra* extra)
{
Qiniu_Io_form form;
Qiniu_Io_form_init(&form, uptoken, key, extra);
curl_formadd(
&form.formpost, &form.lastptr, CURLFORM_COPYNAME, "file", CURLFORM_FILE, localFile, CURLFORM_END);
return Qiniu_Io_call(self, ret, form.formpost);
}
开发者ID:ThatisOK,项目名称:c-sdk,代码行数:12,代码来源:io.c
示例16: curl_easy_setopt
void ResourceHandleManager::setupPOST(ResourceHandle* job)
{
ResourceHandleInternal* d = job->getInternal();
curl_easy_setopt(d->m_handle, CURLOPT_POST, TRUE);
job->request().httpBody()->flatten(d->m_postBytes);
if (d->m_postBytes.size() != 0) {
curl_easy_setopt(d->m_handle, CURLOPT_POSTFIELDSIZE, d->m_postBytes.size());
curl_easy_setopt(d->m_handle, CURLOPT_POSTFIELDS, d->m_postBytes.data());
}
Vector<FormDataElement> elements = job->request().httpBody()->elements();
size_t size = elements.size();
struct curl_httppost* lastItem = 0;
struct curl_httppost* post = 0;
for (size_t i = 0; i < size; i++) {
if (elements[i].m_type != FormDataElement::encodedFile)
continue;
CString cstring = elements[i].m_filename.utf8();
ASSERT(!d->m_fileName);
d->m_fileName = strdup(cstring.data());
// Fill in the file upload field
curl_formadd(&post, &lastItem, CURLFORM_COPYNAME, "sendfile", CURLFORM_FILE, d->m_fileName, CURLFORM_END);
// Fill in the filename field
curl_formadd(&post, &lastItem, CURLFORM_COPYNAME, "filename", CURLFORM_COPYCONTENTS, d->m_fileName, CURLFORM_END);
// FIXME: We should not add a "submit" field for each file uploaded. Review this code.
// Fill in the submit field too, even if this is rarely needed
curl_formadd(&post, &lastItem, CURLFORM_COPYNAME, "submit", CURLFORM_COPYCONTENTS, "send", CURLFORM_END);
// FIXME: should we support more than one file?
break;
}
if (post)
curl_easy_setopt(d->m_handle, CURLOPT_HTTPPOST, post);
}
开发者ID:cdaffara,项目名称:symbiandump-mw4,代码行数:40,代码来源:ResourceHandleManager.cpp
示例17: uim_curl_post_internal
static void *
uim_curl_post_internal(struct uim_curl_post_args *args)
{
uim_lisp post_ = args->post;
uim_lisp post_car_, post_cdr_;
uim_lisp fetched_str_;
const char *url = REFER_C_STR(args->url);
CURL *curl;
CURLcode res;
struct curl_memory_struct chunk;
struct curl_httppost* post_first = NULL;
struct curl_httppost* post_last = NULL;
curl = curl_easy_init();
if(curl == NULL)
return uim_scm_f();
memset(&chunk, 0, sizeof(struct curl_memory_struct));
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, uim_curl_write_func);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
for(post_cdr_ = post_;
!NULLP(post_cdr_);
post_cdr_ = CDR(post_cdr_)) {
const char *name, *value;
post_car_ = CAR(post_cdr_);
name = REFER_C_STR(CAR(post_car_));
value = REFER_C_STR(CDR(post_car_));
curl_formadd(&post_first, &post_last,
CURLFORM_COPYNAME, name,
CURLFORM_COPYCONTENTS, value,
CURLFORM_END);
}
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post_first);
res = uim_curl_perform(curl);
fetched_str_ = (chunk.str != NULL) ? MAKE_STR(chunk.str) : uim_scm_f();
curl_easy_cleanup(curl);
curl_formfree(post_first);
curl_global_cleanup();
free(chunk.str);
return (void *)fetched_str_;
}
开发者ID:NgoHuy,项目名称:uim,代码行数:52,代码来源:curl.c
示例18: send_file_to_server
int send_file_to_server(string path, string id) {
int http_code;
CURL *curl;
CURLcode res;
struct curl_httppost *formpost=NULL;
struct curl_httppost *lastptr=NULL;
struct curl_slist *headerlist=NULL;
static const char buf[] = "Expect:";
curl_global_init(CURL_GLOBAL_ALL);
/* Fill in the file upload field */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "sendfile",
CURLFORM_FILE, path.c_str(),
CURLFORM_END);
curl = curl_easy_init();
/* initialize custom header list (stating that Expect: 100-continue is not
wanted */
headerlist = curl_slist_append(headerlist, buf);
if(curl) {
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, PHOTO_HOST);
// if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
// /* only disable 100-continue header if explicitly requested */
// curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &http_code);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
/* then cleanup the formpost chain */
curl_formfree(formpost);
/* free slist */
curl_slist_free_all (headerlist);
}
return http_code;
}
开发者ID:waps12b,项目名称:emiyamulzomdao-ecube,代码行数:52,代码来源:sendFile.cpp
示例19: Qiniu_Io_PutBuffer
Qiniu_Error Qiniu_Io_PutBuffer(
Qiniu_Client* self, Qiniu_Io_PutRet* ret,
const char* uptoken, const char* key, const char* buf, size_t fsize, Qiniu_Io_PutExtra* extra)
{
Qiniu_Io_form form;
Qiniu_Io_form_init(&form, uptoken, key, extra);
curl_formadd(
&form.formpost, &form.lastptr, CURLFORM_COPYNAME, "file",
CURLFORM_BUFFER, key, CURLFORM_BUFFERPTR, buf, CURLFORM_BUFFERLENGTH, fsize, CURLFORM_END);
return Qiniu_Io_call(self, ret, form.formpost);
}
开发者ID:ThatisOK,项目名称:c-sdk,代码行数:13,代码来源:io.c
示例20: curl_formadd
/**
* Submit a run
* @param bott Bott file for Run info
* @return Submit status
*/
int SPOJJudger::submit(Bott * bott) {
// prepare form for post
struct curl_httppost * formpost = NULL;
struct curl_httppost * lastptr = NULL;
curl_formadd(&formpost, &lastptr,
CURLFORM_COPYNAME, "submit",
CURLFORM_COPYCONTENTS, "Send",
CURLFORM_END);
curl_formadd(&formpost, &lastptr,
CURLFORM_COPYNAME, "problemcode",
CURLFORM_COPYCONTENTS, bott->Getvid().c_str(),
CURLFORM_END);
curl_formadd(&formpost, &lastptr,
CURLFORM_COPYNAME, "lang",
CURLFORM_COPYCONTENTS,
convertLanguage(bott->Getlanguage()).c_str(),
CURLFORM_END);
curl_formadd(&formpost, &lastptr,
CURLFORM_COPYNAME, "file",
CURLFORM_COPYCONTENTS, bott->Getsrc().c_str(),
CURLFORM_END);
prepareCurl();
curl_easy_setopt(curl, CURLOPT_URL, "http://www.spoj.com/submit/complete/");
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
performCurl();
// check submit status
string html = loadAllFromFile(tmpfilename);
// cout << html << endl;
if (html.find("in this language for this problem") != string::npos) {
return SUBMIT_INVALID_LANGUAGE;
}
if (html.find("<form name=\"login\" action=\"") != string::npos) {
return SUBMIT_OTHER_ERROR;
}
return VirtualJudger::SUBMIT_NORMAL;
}
开发者ID:BNUACM,项目名称:bnuoj-vjudge,代码行数:44,代码来源:SPOJJudger.cpp
注:本文中的curl_formadd函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论