'In some cases the ExtendedUrllib user wants to send a request that was
typed in a textbox or is stored in a file. When something like that
happens, this library allows the user to send the request by specifying
two parameters for the send_raw_request method:
:param head: "<method> <URI> <HTTP version>
Header: Value
:param postdata: The data as string
If set to \'\' or None, no postdata is sent
:param fix_content_len: Indicates if the content length has to be fixed
:return: An HTTPResponse object.'

def send_raw_request(self, head, postdata, fix_content_len=True):

    fuzz_req = http_request_parser(head, postdata)
    if fix_content_len:
        headers = fuzz_req.get_headers()
        fixed = False
        for h in headers:
            if (h.lower() == 'content-length'):
                headers[h] = str(len(postdata))
                fixed = True
        if ((not fixed) and postdata):
            headers['content-length'] = str(len(postdata))
        fuzz_req.set_headers(headers)
    function_reference = getattr(self, fuzz_req.get_method())
    return function_reference(fuzz_req.get_uri(), data=fuzz_req.get_data(), headers=fuzz_req.get_headers(), cache=False, grep=False)
