I'm using the HTTP-POST script found on the REBOL website to send SMS 
messages over Rogers AT&T's website.

http://www.rogers.com/english/wireless/sendpcs.html

It's been working beautifully in the past with some help from you REBOL 
genious' but now occasionally I seem to get a "HTTP/1.1 500 Internal Server 
Error".

Is Rogers trying to throttle the amount of SMS messages sent by 1 user 
through their website?  Is there any way around this?

Here's my modified code (warning, it's very crude!).  I think most of it's 
the same as the original, except the bottom.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
REBOL [
    Title:  "Simple HTTP POST"
    File:   %http-post.r
    Author: "Martin Johannesson"
    Email:  [EMAIL PROTECTED]
    Date:   30-Jun-1999

    Purpose: {
        This script sends a "form" to a webserver using the POST
        method. The included example translates a string in English
        to German by posting the data to AltaVista's translation
        web page and then parsing the reply.
    }
    Category: [web util net 4]
]



url-encode: func [
    {URL-encode a string}
    data "String to encode"
    /local new-data
][
    new-data: make string! ""
    normal-char: charset [
        #"A" - #"Z" #"a" - #"z"
        #"@" #"." #"*" #"-" #"_"
        #"0" - #"9"
    ]
    if not string? data [return new-data]
    forall data [
        append new-data either find normal-char first data [
            first data
        ][
            rejoin ["%" to-string skip tail (to-hex to-integer first data) 
-2]
        ]
    ]
    new-data
]

http-post-form: func [
    {Post a form to a web server}
    url "The URL to post to"
    data [block!] "A block of name/value pairs to represent the form"
    /local
    encoded-data
    port-spec
    HTTP-Post-Header
    http-request
    buffer
    tmp-buffer
][
    port-spec: make port! [
        scheme: 'tcp
        port-id: 80
        timeout: 0:10
    ]
    net-utils/url-parser/parse-url port-spec url

    encoded-data: make string! ""
    foreach [name value] data [
        append encoded-data rejoin [
                url-encode name "=" url-encode value "&"
        ]
    ]
    remove back tail encoded-data

    HTTP-Post-Header: make object! [
        Accept: "*/*"
        User-Agent: reform ["REBOL" system/version]
        Host: port-spec/host
        Content-Type: "application/x-www-form-urlencoded"
        Content-Length: length? encoded-data
    ]

    http-request: rejoin [
        "POST /"
        either found? port-spec/path [port-spec/path][""]
        either found? port-spec/target [port-spec/target][""]
        " HTTP/1.0^/"
        net-utils/export HTTP-Post-Header "^/"
        encoded-data
    ]

    http-port: open/lines [
        scheme: 'tcp
        port-id: port-spec/port-id
        timeout: port-spec/timeout
        host: port-spec/host
        user: port-spec/user
        pass: port-spec/pass
    ]

    insert http-port http-request

    buffer: make string! 10000
    tmp-buffer: reform ["HTTP-Response:" pick http-port 1]
    while [not none? tmp-buffer] [
        append buffer rejoin [tmp-buffer "^/"]
        tmp-buffer: pick http-port 1
    ]
    close http-port

    HTTP-Header: make object! [
        HTTP-Response: Date: Server: Last-Modified: none
        Accept-Ranges: Content-Encoding: Content-Type: none
        Content-Length: Location: Expires: Referer: Connection: none
    ]

    parse-header HTTP-Header buffer
]

send-message: func [
    {Sends a message}
    area-code
    phone-number
    message
][
    not-lt-gt: complement charset [#"<" #">"]
    tag-rule: ["<" some not-lt-gt ">"]
    tmp: http-post-form
http://216.129.53.44:8080/cgi-bin/send_sm_rogers.new?
reduce [

        "msisdn" join area-code phone-number
        "num1" area-code
        "num2" phone-number
        "oldtext" ""
        "text" message
        "SIZEBOX" to-string length? message
        "submit" "send message"
        "sm_ym" "Your Message: "
        "sm_status_ok" "has been sent to:"
        "sm_status_fail" "cannot presently be sent to: "
        "sm_logo" "/att-logo.gif"
        "sm_home_link" "http://www.rogers.com";
        "sm_home_text" "home"
]
         if none? find tmp/HTTP-Response "200" [return join "Error: " 
tmp/HTTP-Response]
;       either parse tmp/content [  ; very ugly
;               parsing attempt
;               thru "Your Message: <br>" to {</b><br>} thru "<br>" copy trans to
;               {</font>} to end      ; changed parse value
;       ][
;               return trans
;       ][
;               print ["Content was: " tmp/content]
;               return "Error: Unable to parse HTML result page"
;       ]
]

;'area' 'number' and 'textbody' are variables loaded from another function.
;ex. '416' '5551234' 'hello there'

print send-message area number textbody




_________________________________________________________________
Surf the Web without missing calls! Get MSN Broadband. 
http://resourcecenter.msn.com/access/plans/freeactivation.asp

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to