Ошибка синтаксического анализа функции C
Вот мой код для функции синтаксического анализа для PSET6. Я не уверен, почему я получаю неудачу 501. (Мне не велено делать это за 404).
~/рабочее место/pset6/ check50 2015$.осень.pset6.сервере server1.с
:) сервер. c существует
:) сервер компилируется
:) HTTP / 1.0 возвращает код ошибки 505
:) Метод 'abcGET' возвращает код ошибки 405
:) Метод 'GETabc' возвращает код ошибки 405
:) request-target без запуска ' / ' возвращает код ошибки 501
:) запрос-цель abc/hello.php возвращает код ошибки 501
: (Запрашивает cat.exe возвращает код ошибки 501
\ ожидаемый вывод, но не "HTTP / 1.1 505 HTTP версия не поддерживается..."
: (Запрос несуществующего файла возвращает код ошибки 404
\ ожидаемый вывод, но не "HTTP / 1.1 505 HTTP версия не поддерживается..."
:) Запрашивающий запрос-цель с " возвращает код ошибки 400
:) Два пробела после GET возвращает код ошибки
:) Пробел в целевом объекте запроса возвращает код ошибки
:) Два пробела перед HTTP / 1.1 возвращает код ошибки
https://sandbox.cs50.net/checks/09d731e26ba744e6b2c086cb1b67cfe5
Что я уже пробовал:
bool parse(const char* line, char* abs_path, char* query) { char* buffer = malloc(sizeof(line)); strcpy( buffer, line); char* firstsp = strtok( buffer, " "); char* scndsp = strtok( NULL, " "); char* thirdsp = strtok( NULL, " "); char* ver = strtok( thirdsp, "\\"); char method[ strlen(firstsp) + 1 ]; char request[ strlen(scndsp) + 1 ]; char http[ strlen(ver) + 1 ]; strcpy( method, firstsp); strcpy( request, scndsp); strcpy( http, ver); if ( strcmp(method, "GET") != 0 ) { error(405); return false; } if ( request[0] != '/') { error(501); return false; } if ( strchr( request, '\"') != NULL ) { error(400); return false; } if (strcmp( http, "HTTP/1.1") != 0) { error(505); return false; } abs_path = request; int b; for ( b = 0; b < strlen(scndsp); b++ ) { if ( scndsp[b] == '?' ) { break; } } if ( strchr( scndsp, '=') != NULL) { while (scndsp[b] != ' ' ) { query[b] = scndsp[b]; b++; } } else { query[0] = '\0'; } return true; }
Afzaal Ahmad Zeeshan
В вашем коде есть эта часть, она говорит, что требует, чтобы запрос начинался с "/". В противном случае он выдаст эту ошибку.
Но непонятно, 501 ошибка обычно означает, что что-то не так (в контексте HTTP-связи). Что именно все это значит?
Member 12919791
Точные инструкции ссылка:
http://cdn.cs50.net/2016/x/psets/6/pset6/pset6.html#parse