You get an exception because you dereference NULL in your catch clause. Likely Response is NULL, and you try to call GetResponseStream() on it. How do you know that Exception has a Response member? Don't you think that any of the statements before the call to Invoke-RestMethod could have thrown an exception?
Don't know, it completely depends on the web service you're trying to send the request to. Do you have access to the source code? In that case it might be easier to debug the web service than the client script.