As so often happens, a good night's sleep and fresh eyes suggest solutions to what the night before seemed like an intractable obstacle. This morning I realized that if the back end was displaying data in a browser window, but returned $Failed when called by my front-end code, then there was something wrong with the front-end code. I rewrote the critical parts of the code, those quoted above. To my surprise and delight, it worked perfectly (okay, not perfectly, but it did work). Even the images came through, though they were being sent as humongous strings of RGB values!
So why didn't it work before? I'm not positive, but here is a possible explanation: I was copying the URL for the HTTPRequest function from the output cell when I deployed a back-end cloud object, and pasting it inside the brackets of the HTTPRequest function. After I would type quotation marks around the URL, sometimes the color-coding would indicate that it still wasn't a string. I dismissed this as a glitch in the color coding. The code, when run, would also say that I lacked a closing ] when in fact the ] was there. I have come to realize that there are a lot of hidden characters in Wolfram code (escape characters, cell formatting characters, etc.) that you can't see unless you examine the FullForm of it, and I now believe that the URLs I was copying must have contained hidden characters that prevented the code from working.
In any event, it is now working well enough for me to proceed with the project. It's a hobby project of mineĀserious, but not commercial. If anyone is interested to know more about it (or even contribute), let me know. We can communicate further outside of the forum.