Opposite of PathCreateFromUrl - c++

I need to convert a local file path into a file protocol URL to be opened by a web browser (IE in particular.) What I need is the opposite of what PathCreateFromUrl API does. So is there such API?

Related

Rendering images from REST response on localhost

I am trying to run a REST API on one port (8000) using django and consuming that API in an App running on port 9000 again using django.
My REST response is having an image field, now the problem is that i can not provide my desktop path in upload_to option in my API models and if i am giving the absolute path of API project in my App project index. Html, i get a browser error as "Not allowed to load resources from local path"
So i am having to create media folders with same name in both API and App projects and keeping image files in both and using only the file path from the REST response and rendering the image from App project itself.
Is there any way i can get away with this and consume the image from the Rest response only?
You need to convert image to base64 in server side then send those base64 string as response . Then consume this base64 string as response in calling api. Then use it accordingly either save in filesysyem or in database . But make sure to converse base 64 image string to bytes.

get list of files Curl

I wanna download *.txt files from server using curl, but unfortunately I can't understand how to do it, because I'm beginner in curl, I though to use recursive iterator from boost::filesystem, maybe you have any different ways to solve my problem? thank you)
boost::filesystem only works with file paths on the local machine, and UNC paths on a local network. You cannot use it to iterate remote files over the Internet.
If the files are on an HTTP server, libCURL cannot iterate the files directly, as that capability is not part of the HTTP protocol. Your only hope is if the HTTP server provides an HTML file (or other format) containing the file listing when you request a URL for the actual directory that the files reside in. However, for obvious security reasons, many HTTP servers disable this feature! Most servers will instead redirect to a specific file, like index.html, index.php, default.aspx, etc. But, if the HTTP server does allow to retreive a file listing, you would have to retrieve and parse that listing data manually in order to determine the URLs of the individual files, and then you can download them as needed.
If the files are on an FTP server, then that is more desirable, as directory listings are part of the FTP protocol, and libCURL can retrieve an FTP directory listing (make sure the requested URL ends with a backslash so libCURL knows a directory is being requested and not a specific file). However, you are responsible for parsing the listing data, which can be in any format the FTP server decides to send (and there are MANY MANY listing formats used by various online FTP servers!). Modern FTP servers support the FTP MLSD and MLST commands (as opposed to the original LIST command) to facilitate easier parsing of listing data, so you can try instructing libCURL to use those commands (via libCURL's CURLOPT_CUSTOMREQUEST option) if the FTP server supports those commands. Or, if you are interested in only the file names and not the file details (like timestamps, sizes, etc), you can use the FTP NLST command instead (via libCURL's CURLOPT_DIRLISTONLY option).

How to open the default browser in background and get the source code of a web page?

I'm using Dev-C++ and i'm looking for a mode to open(...or better...i need to load a browser intance in the background) the default browser (Example I.E.) and send a request to get the source code of the page I requested.
Can I do something like this in C++?
Thank you!
P.S. I need this for Windows
You seem to have imagined the wrong solution for your problem. If you want to get the HTML source for a web page, you don't need to somehow do it through the browser. You need to do whatever the browser does to get it.
When you enter an address into a browser, the browser sends a HTTP GET request to the server that hosts the resource you're requesting (often a web page) and the server sends a HTTP response back containing the resource content (often HTML) back.
You want to do the same in your application. You need to send a HTTP request to the server and read the response. A popular library for doing this is libcurl.
If you don't have to send a POST request (i.e. just a simple web request or with parameters passed on the URL (GET), then you could just use URLDownloadToFile().
If you don't want to use callbacks etc. and just download the file, you can call it rather simple:
URLDownloadToFile(0, "http://myserver/myfile", "C:\\mytempfile", 0, 0);
There are also a few other functions provided that will automatically push the downloaded data to a stream rather than a file.
It can't be done in pure C++. You should use native Windows library or other (like Qt Framework) and use it's capabilities of getting and parsing website. In Qt, you'd use QtWebkit.
edit: also if you want only the source code of a page, you can do this without using browser or their engines, you can use Winsock.

api request returns json files and not html/xml browser content

I am sending get httpwebrequests to the facebook graph api and all was working fine till I deployed to production server and now module that expects html/xml response is not working and when tested url in internet explorer, the save file dialog pops up and the file needs to be saved.
Other modules also send requests to the facebook graph but just differ in the form of requests so not sure what is going on here.
Any ideas appreciated
Edit:
Let me try and rephrase this. On my production server the httpwebrequest was not returning the correct result. So to Test it I copied the url http://graph.facebook.com/pepsi which is an example, should return the profile info viewable in the browser. The server has internet explorer v8 and I am not sure why it tries to download the file instead of displaying it in the browser. this is what is happening in my code and when I make a request to a different part of the api, then it works in my app but not in the browser
Your question is not very clear. From what I gather, you want the display the JSON response in a browser. Instead, you are being asked to download a file by the browser.
Well, this is normal behaviour. The response you get from Facebook would most likely have a MIME type of application/json. Most newer web browsers display the text in the browser itself. Some browsers, however don't know how to handle this content type and just ask you to download the file.
You mentioned that your module expects an html/xml response. Try changing this to application/json.
You also said that it works in your app but not in your browser. I don't know what you're making, but generally you wouldn't show raw json to the user in a browser, right?

Consume a redirected webservice in ColdFusion

I've been provided a WSDL file that points to a webservice. I use this webservice to log in and create a session. In addition to the session token, the login response provides a URL I'm supposed to redirect my webservice calls to. Other than the URL I'm addressing, the definitions are the same, so no new WSDL is provided.
What is the best way to handle this? Generate my own altered WSDL? Create and/or alter the webservice object via Java? Some third option I've not thought of?
This is a hack, but you can always download the WSDL as a template, and reference it as a local file. When the login call tells you what URL to hit, simply replace the URL in the template with the new one, and proceed. You could even have a different version of the WSDL for each URL that could be returned, maybe using a hash of the URL as the filename.
Coldfusion webservice invocations always point to WSDL. Be it a local WSDL file, or a remote WSDL file you can access over an HTTP or HTTPs connection. Unless the responding URL points to a new WSDL file to use, it's not going to be that helpful.
-Jay