Download image via webservice - iphone

Hi there
I have an IPhone application that is downloading data from a .net webservice.
The webservice uses the following:-
[System.Web.Script.Services.ScriptService]
public class DownloadHelperService : System.Web.Services.WebService {
public DownloadHelperService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
[System.Web.Script.Services.ScriptMethod(UseHttpGet = false)]
public byte[] Download(string fileName)
{
return Facade.IOHelper.DownloadFileFromServer(fileName);
}
}
This method will in theory download an image file to the client. The issue is that this is being downloaded as Json which is inefficient.
If I take off the scriptmethod attribute and class level script then I cannot make the call from my IPhone application as it says that my method calls require the scriptmethod attributes.
If anyone can advise on the best route to download images from a webservice to an IPhone application using objective-c I would be eternally grateful

Make the webservice return you the image url and then download the image from the url.

Related

How I web-scrape the data a website that I need perform some action in website before the data I need via Flutter?

The website that I would like to scrape
Before scraping the data I need first I must choose departure, arrival and date then I must clicked the green buton then I can reach the data I would like to scrape.
How I can perform these actions in website via Flutter. Then I will use these datas in the Flutter app.
I tried to scrape via import http.dart and parser.dart libraries but I couldn't. I am beginner in coding and Flutter.
Hey found a article which will help you do this.
Follow :
https://morioh.com/p/b7b4aa4d696e
Kudos to Morioh for the detailed step by step article.
Concern : this might be outdated package as there is no update since past one year.
You maybe need the dart:html in all app scope , but this file are limited on the web (or You need to do something different on the web than on an Android device!).
you can create 3 file and to handle this mode.
file web.dart :
import 'dart:html' as html;
void webScrap() {
// blablabla webScrap in web
}
String cookie = "";
file native.dart :
void webScrap() {
// blablabla webScrap in native
}
String cookie = "";
file switch_native_web.dart :
import 'native.dart' if (dart.library.html) 'web.dart' as switch_value;
class SwitchNativeWeb {
static String cookie = switch_value.cookie;
static void webScrap() {
switch_value.webScrap();
}
}
But i suggest to you , see this example for web scraping in flutter .
Gist full Snippets: Gist.Github.com
Repository : Github.com

Google app engine Endpoints, Objectify Register

I start google app engine with endpoints, I use objectify for persistence and I have an little question.(I hope !)
All my apiMethod start like it :
#ApiMethod(path = "getAccount", httpMethod = HttpMethod.GET)
public Account getAccount(#Named("idPlayer") long idPlayer) {
ObjectifyLoader.loadEntity();
ObjectifyLoader.loadEntity(); is just a method like it
public static void loadEntity(){
ObjectifyService.register(Account.class);
ObjectifyService.register(WeaponsAccount.class);
}
I got the impression that I register my class et each call to the api.
A tips for load only one time?
Thanks you for reading.
Fabiitch
You want to use a ServletContextListener. Check out this App Engine oage for an example.

Facebook OAuth stopped working suddenly

I noticed yesterday that my Facebook login for my website has stopped working.
This has been working great for the last 2 months, as far as I am aware I have not changed anything. I have tried everything I can on links such as: - as well as many more...
ASP.NET MVC5 OWIN Facebook authentication suddenly not working
I have noticed that the Stack Overflow Facebook auth has also stopped working.
Has anyone else noticed this and found any solution? It's worth noting I am using azure app services to host. But this issue is also found when I am using localhost.
My current setup looks like this...
in Startup.Auth.cs
var facebookOptions = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationOptions()
{
AppId = "xxxxxxxxxxxxx",
AppSecret = "xxxxxxxxxxxx"
};
facebookOptions.Scope.Add("email");
app.UseFacebookAuthentication(facebookOptions);
In the following method, loginInfo is null every time.
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
I also added a session "WAKEUP" from a different post suggestion, fb auth failed once before and this fixed the issue this time, but it has come back.
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
Session["WAKEUP"] = "NOW!";
// Request a redirect to the external login provider
return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
}
As RockSheep explained. Facebook dropped the support vor API v2.2. You need to update your OWIN nuget packages.
You can find the issue on github (from the Katanaproject).
Ensure to activate pre releases in your nuget manager, than you are able to update the nuget packages to version v3.1.0-rc1. But beware: After the update, you need to test your login carefully (maybe you also have other authentication providers like Microsoft or Google, you should test them as well).
Technical
The Api changed the version number to v2.8 and the return value from the API is now in JSON-Format and no longer escaped in the URI. The 'old' OWIN packages can not handle this changes.
[Oauth Access Token] Format - The response format of
https://www.facebook.com/v2.3/oauth/access_token returned when you
exchange a code for an access_token now return valid JSON instead of
being URL encoded. The new format of this response is {"access_token":
{TOKEN}, "token_type":{TYPE}, "expires_in":{TIME}}. We made this
update to be compliant with section 5.1 of RFC 6749.
Here you can find the code-changes on GitHub for further informations and better understanding.
A lot of people started having trouble after yesterday. This is due to Facebook dropping support for v2.2 of their API. For some reason their system still redirects auth calls that don't use a version number to the 2.2 API. A quickfix is to ensure that the API version gets sent with the API call.
Starting at v2.3 Facebook also started returning JSON objects. So make sure to change that in the code as well.
I had the same issue, found solution here Fix facebook oauth 2017
Basically, you need to extend HttpClientHandler and decode JSON response instead of body
Here is a solution for those who are using scribe java.
public Token extract(String response)
{
Preconditions.checkEmptyString(response, "Response body is incorrect. Can't extract a token from an empty string");
JSONObject obj = new JSONObject(response);
return new Token(obj.get("access_token").toString(), EMPTY_SECRET, response);
}
Create a new class and set the extractor to JSON.
import org.scribe.builder.api.DefaultApi20;
import org.scribe.extractors.AccessTokenExtractor;
import org.scribe.extractors.JsonTokenExtractor;
import org.scribe.model.OAuthConfig;
public class FaceFmApi extends DefaultApi20 {
#Override
public String getAccessTokenEndpoint()
{
return "https://graph.facebook.com/oauth/access_token";
}
#Override
public AccessTokenExtractor getAccessTokenExtractor()
{
return new JsonTokenExtractor();
}
#Override
public String getAuthorizationUrl(OAuthConfig config) {
return null;
}
}
and inject your newly created class as below. Then getAccessToken() will work as expected.
public OAuthService getService() {
return new ServiceBuilder().provider(FaceFmApi.class)
.apiKey(config.getApiKey()).apiSecret(config.getApiSecret())
.callback(config.getCallback()).build();
}

accessing to google api in unity

I want to access to google's APIs in Unity3d. I want to use google plus API in my Unity3d application to have sharing feature in the app.
Please help me if you worked with google's APIs in Unity3d.
Thanks.
There is a detailed explanation of how to do this here for C#/.NET. You will at most have to make only minor changes to the code to make it work with Mono. One thing to note, is that you will have to include this code in order to tell Mono to allow the requests to the API. (source)
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
public class UnsafeSecurityPolicy {
public static bool Validator(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors policyErrors) {
//*** Just accept and move on...
Debug.Log ("Validation successful!");
return true;
}
public static void Instate() {
ServicePointManager.ServerCertificateValidationCallback = Validator;
}
}
You will have to call Instate before you start using the API.

Sending a file throught a Post with HTTPBuilder in Grails

I am developing a Facebook Application an i wanna send a video file from myServer to Facebbok User`s Timeline. This is the page with the explanation http://developers.facebook.com/blog/post/515/#video_upload but its a PHP code.
My app is on Grails, and im looking in HTTBuilder class but can't find a way to do this.
Do someone know how to do it?
If isnt possible to do this with HTTPBuilder, in my app, i am using Spring Social Facebook Plugin on Grais
I found the interface MediaOperations but i dont know how to use this interface and use the method postVideo to upload a Video.
Thanks!
Will try to help a bit. You may use MediaOperations interface for this operation. Spring Social Facebook Plugin configures a service called Facebook for you. You can use it via dependency injection.
Here is a simple code example:
import org.springframework.social.facebook.api.Facebook
class FacebookService {
Facebook facebook
def uploadVideo(String videoFileName, String title, String description) {
try {
def videoResource = new FileSystemResource(videoFileName)
facebook.mediaOperations().postVideo(videoResource, title, description)
return true
}
catch (Exception e) {
log.error("Error to upload video to facebook", e)
return false
}
}
}
The video is loaded from the file in the FS by specified file path/name from videoFileName variable. This means, user need to upload the video first, and code should save it to some file in FS first, then upload. Usually this is the best case, as video files are large. Maybe there is a sense to upload the video to facebook in separate thread and don't give the user to wait.