void CustomScriptSearchProvider::PeformSearch(QString token, int category, int page)
{
    QNetworkRequest request;
    QString url = BuildUrl(token, category, page);
    qDebug() << "Url:" << url;
    request.setUrl(url);

    if (m_scriptVal.isValid())
    {
        fillAdditionalHeaders(request, m_scriptVal);
    }

    switch (m_requestType)
    {
    case GET:
    {
        m_pNetworkManager->get(request);
        break;
    }

    case POST:
    {
        QByteArray postData = BuildPostData(token, category, page).toUtf8();
        m_pNetworkManager->post(request, postData);
        break;
    }

    default:
        break;
    }
}
示例#2
0
文件: url.c 项目: EMGroup/tkeden
/*
** Resolve a sequence of URLs.  Return the result in space obtained
** from malloc().
*/
char *ResolveUrl(
  char *zBase,              /* The base URL */
  const char **azSeries     /* A list of relatives.  NULL terminated */
){
  Url *base;
  Url *term;
  char *z;

  base = ParseUrl(zBase);
  while( azSeries[0] ){
    term = ParseUrl(azSeries[0]);
    azSeries++;
    if( term->zScheme==0 && term->zAuthority==0 && term->zPath==0
        && term->zQuery==0 && term->zFragment ){
      ReplaceStr(&base->zFragment, term->zFragment);
    }else if( term->zScheme ){
      Url temp;
      temp = *term;
      *term = *base;
      *base = temp;
    }else if( term->zAuthority ){
      ReplaceStr(&base->zAuthority, term->zAuthority);
      ReplaceStr(&base->zPath, term->zPath);
      ReplaceStr(&base->zQuery, term->zQuery);
      ReplaceStr(&base->zFragment, term->zFragment);
    }else if( term->zPath && term->zPath[0]=='/' ){
      ReplaceStr(&base->zPath, term->zPath);
      ReplaceStr(&base->zQuery, term->zQuery);
      ReplaceStr(&base->zFragment, term->zFragment);
    }else if( term->zPath && base->zPath ){
      char *zBuf;
      int i, j;
      zBuf = malloc( strlen(base->zPath) + strlen(term->zPath) + 2 );
      if( zBuf ){
        sprintf(zBuf,"%s", base->zPath);
        for(i=strlen(zBuf)-1; i>=0 && zBuf[i]!='/'; i--){ zBuf[i] = 0; }
        strcat(zBuf, term->zPath);
        for(i=0; zBuf[i]; i++){
          if( zBuf[i]=='/' && zBuf[i+1]=='.' && zBuf[i+2]=='/' ){
            strcpy(&zBuf[i+1], &zBuf[i+3]);
            i--;
            continue;
          }
          if( zBuf[i]=='/' && zBuf[i+1]=='.' && zBuf[i+2]==0 ){
            zBuf[i+1] = 0;
            continue;
          }
          if( i>0 && zBuf[i]=='/' && zBuf[i+1]=='.' && zBuf[i+2]=='.'
                 && (zBuf[i+3]=='/' || zBuf[i+3]==0) ){
            for(j=i-1; j>=0 && zBuf[j]!='/'; j--){}
            if( zBuf[i+3] ){
              strcpy(&zBuf[j+1], &zBuf[i+4]);
            }else{
              zBuf[j+1] = 0;
            }
            i = j-1;
            if( i<-1 ) i = -1;
            continue;
          }
        }
        free(base->zPath);
        base->zPath = zBuf;
      }   
      ReplaceStr(&base->zQuery, term->zQuery);
      ReplaceStr(&base->zFragment, term->zFragment);
    }
    FreeUrl(term);
  }
  z = BuildUrl(base);
  FreeUrl(base);
  return z;
}